1. ホーム
  2. visual-studio-2010

MSBUILDでTFS2010にMSDEPLOYを実行させるにはどうしたらいいですか?

2023-08-26 06:55:51

質問

優れたPDCの講演があります はこちら Vishal Joshi による、Visual Studio 2010 の新しい MSDEPLOY 機能と、TFS 内でアプリケーションをデプロイする方法について説明されています。(以下の素晴らしい講演もあります。 Scott Hanselman の素晴らしい講演もありますが、彼は TFS については触れていません)。

TFS2010 内で MSBUILD を使用して MSDEPLOY にコールスルーし、パッケージを IIS にデプロイすることができます。これは、MSBUILD へのパラメーターによって行われます。

この講演では、.NET Framework のようなコマンドライン パラメータについて説明します。

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"

しかし、このためのドキュメントはどこにあるのでしょうか。

私はこれを動作させようと一日中費やしてきましたが、なかなかうまくいかず、さまざまなエラーで終わり続けています。もし私がパッケージの cmd ファイルを実行すると、完全にデプロイされます。Visual Studio を通して WebDeploy を実行すると、それも完璧に機能します。

しかし、デプロイメント全体を msbuild を個別に呼び出すのではなく、これらの引数を使って msdeploy を実行したり、パッケージの .cmd ファイルを作成します。どうすればいいのでしょうか?

PS. はい、私は Web Deployment Agent Service を実行しています。また、IISの下で管理サービスも動かしています。両方使ってみました。


使っているアーギュメント:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:Configuration=Release 
/p:CreatePackageOnPublish=True  
/p:DeployIisAppPath=staging.example.com   
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:AllowUntrustedCertificate=True

を与える。

C:\Program Files (x86)╱Microsoft.VisualStudio.v10.0WebMicrosoft.Web.Publishing.targets (2660): VsMsdeployに失敗しました(リモートエージェント(URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com )に連絡できませんでした。 ターゲットコンピュータにリモートエージェントサービスがインストールされ、起動していることを確認してください)。エラーの詳細 リモートエージェント(URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com )にコンタクトできませんでした。 ターゲットコンピュータにリモートエージェントサービスがインストールされ、起動されていることを確認してください。サポートされていないレスポンスを受信しました。応答ヘッダー 'MSDeploy.Response' は '' でしたが、'v1' が期待されていました。リモートサーバーはエラーを返しました:(401) Unauthorized。

どのように解決するのですか?

IIS7 +関連する回答....

OK - 以下は、私が最終的に行ったことです。多かれ少なかれ、次の投稿に従います。 サイモン・ウィーバー による投稿に従ったものです。

しかし、MSBuildの設定となると...ここではほとんどの人が以下の設定を使っています。 /p:MSDeployPublishMethod=RemoteAgent で、これは 正しくない になっています。この設定を使うと、TFSはそのurlに接続しようとします。 https://your-server-name/MSDEPLOYAGENTSERVICE しかし、そのURLにアクセスするためには、認証するユーザがAdminである必要があります。Admin-overrideルールにチェックを入れておく必要があります)。このURLはIIS6用だと思います。

RemoteAgentを使用して接続しようとしたときの標準的なエラーメッセージは次のとおりです。

標準の 401 Frak Off u suck RemoteAgent、エラー

C:\Program Files (x86)\Microsoft.VisualStudio.v10.0Web (3588): Webデプロイメントタスク failed.(リモートエージェント (URL http://your-web-server/MSDEPLOYAGENTSERVICE ) にコンタクトできませんでした。 リモートエージェントサービスが リモートエージェントサービスがインストールされ 起動されていることを確認してください。) サイト名、ユーザー名 サイト名、ユーザー名、パスワードが正しいか確認してください。 パスワードが正しいことを確認します。問題が解決しない場合 解決しない場合は、ローカルまたはサーバーの管理者に連絡してください。 ローカル管理者またはサーバー管理者に連絡してください。エラー内容 の詳細をご覧ください。リモートエージェント(URL http://your-web-server/MSDEPLOYAGENTSERVICE ) に連絡できませんでした。 リモートエージェントサービスが リモートエージェントサービスがインストールされ ていることを確認してください。サポートされていない サポートされていない応答を受信しました。応答ヘッダーの レスポンスヘッダ 'MSDeploy.Response' は 'V1' でした。 が 'V1' であったが 'v1' が期待されていた。リモートサーバーが リモートサーバーがエラーを返した:(401) Unauthorizedです。

ということは......あなたの MSDeployPublishMethod をこのように変更する必要があります。

/p:MSDeployPublishMethod=WMSVC

WMSVC は Windows Manager Service を表します。これは基本的にリモートエージェントの新しいラッパーですが、ユーザ名とパスワードを正しく提供できるようになりました...ユーザは管理者である必要はありません! (喜び!) つまり、Webサイトごとに、どのユーザーにアクセスさせるかを設定できるようになりました。

また、URLをヒットしようとするようになりました。 https://your-web-server:8172/MsDeploy.axd これは、Visual Studio 2010 の Publish のウィンドウがそうです! (OMG -> PENNY DROPS!!! BOOM!!)

そして、これが私の最終的なMSBuildの設定です。

/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=WMSVC
/p:MsDeployServiceUrl=your-server-name
/p:DeployIISAppPath=name-of-the-website-in-iis7    
/p:username=AppianMedia\some-domain-user 
/p:password=JonSkeet<3<3<3
/p:AllowUntrustedCertificate=True

ユーザー名にドメイン名が入っているのに気づきましたか?これは必要です。また、私の絵では、私は管理のためにドメインユーザーにウェブサイトへのアクセスを許可しています。そのため、私が追加した新しいユーザーアカウント(TFSBuildService)には Domain Users グループへのメンバーシップを持っています...だから、それはすべてが動作する方法です。

さて、ここまで読んだら、笑いのツボを押さえてください(2007年版だから)......。