78

ここでは、Vishal Joshiから入手できる優れたPDCトークがあり、Visual Studio 2010の新しいMSDEPLOY機能と、TFS内でアプリケーションを展開する方法について説明しています。(スコット・ハンゼルマンからの素晴らしい話もありますが、彼はTFSには参加していません)。

TFS2010内でMSBUILDを使用して、MSDEPLOYを呼び出し、パッケージをIISに展開できます。これは、MSBUILDのパラメーターを使用して行われます。

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

/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で管理サービスを実行しています。両方使ってみました。


私が使用しているArgs:

/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)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.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)許可されていません。

4

8 に答える 8

48

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

わかりました-これが私がやったことです。多かれ少なかれ、このスレッド/質問のサイモン・ウィーバーによる投稿に従ってください。

しかし、MSBuild の設定に関しては、ここにいるほとんどの人が次の設定を使用しています。/p:MSDeployPublishMethod=RemoteAgentこれはIIS7 には適していません。この設定を使用すると、TFS は URL に接続しようとします。https://your-server-name/MSDEPLOYAGENTSERVICE ただし、その URL にアクセスするには、認証するユーザーが管理者である必要があります。これは壊れています。(そして、Admin-override ルールにチェックを入れる必要があります)。この URL は IIS6 用だと思います。

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

Standard 401 Frak Off u suck RemoteAgent, error

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (3588): Web 配置タスクが失敗しました。 (リモート エージェント (URL http://your-web- server/MSDEPLOYAGENTSERVICE ) に接続できませんでした。ターゲット コンピュータにリモート エージェント サービスがインストールされ、開始されていることを確認してください。サイト名、ユーザー名、およびパスワードが正しいことを確認してください。問題が解決しない場合は、ローカルまたはサーバー管理者に連絡してください。エラーの詳細: リモート エージェント (URL http://your-web-server/MSDEPLOYAGENTSERVICE) に連絡できませんでした。リモート エージェント サービスがターゲット コンピュータにインストールされ、開始されていることを確認します。サポートされていない応答を受け取りました。応答ヘッダー 'MSDeploy.Response' は 'V1' でしたが、'v1' が予期されていました。リモート サーバーがエラーを返しました: (401) 権限がありません。

だから..これに変更する必要がありますMSDeployPublishMethod

/p:MSDeployPublishMethod=WMSVC

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

ここに画像の説明を入力

また、URL をヒットしようとするようになりました: https://your-web-server:8172/MsDeploy.axd<-- これはまさに Visual Studio 2010Publishウィンドウが行うことです! (OMG -> ペニードロップス!! ブーム!)

ここに画像の説明を入力

そして、これが私の最終的な 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

ユーザー名にドメイン名が含まれていることに注意してください。そこが必要です。また、私の写真では、DOMAIN USERS が管理のために Web サイトにアクセスできるようにしています。そのため、追加した新しいユーザー アカウント (TFSBuildService) には、Domain Usersグループへのメンバーシップがあります。これがすべての仕組みです。

今-これをすべて読んだなら、lollcatを持ってください(彼らはSOOOOOOOO 2007だからです)....

ここに画像の説明を入力

于 2011-05-03T09:56:02.627 に答える
19

最終的に私のために働いた手順は次のとおりです。RemoteAgent を操作したかったのですが、何を試しても機能しませんでした。

このように正確に行う必要はありませんが、これが私がそれを機能させた方法です

  • WMSVC を構成する
  • サービスが開始されていることを確認する
  • IIS ユーザーを構成し (IIS の [TOP MOST SERVERNAME] をクリック)、[IIS Manager Users] に移動します。Windows名とは異なる名前にすることをお勧めします。
  • WMSVC (私にとっては LOCAL SERVICE) のユーザー アカウントに、使用している IIS ディレクトリへの書き込み権限があることを確認します。
  • 私の場合、SSL証明書を使用しています(localhostにアクセスしていますが)。

これらはすべて、TFS ビルド定義内に追加された MSBUILD への引数であることを思い出してください。

/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=WMSVC 
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:username=sweaveriis 
/p:password=abcd1234 
/p:DeployIisAppPath=staging.example.com/virtual_directory_name
/p:AllowUntrustedCertificate=True

注: staging.example.com は、実際にはホスト ファイルエントリが 127.0.0.1 を指すローカル ボックスです。Localhost はおそらくここでも機能するでしょう。

役立つ記事:

MSDeploy の問題のトラブルシューティング

その他のトラブルシューティング

于 2010-04-17T00:17:15.323 に答える
16

残念ながら、現時点ではこれに関する多くの情報はありません。ただし、このメッセージの最後にいくつかのヒントを示します。


あなたの問題については、以前に MSDeploy を使用して展開しようとしたときに、実行中のアカウントにターゲット マシンで展開を実行する権限がなかったときにこれを見たことがあります。そのため、ビルドが実行されているアカウントを調べて、このアカウントにターゲット マシンにデプロイする権限があるかどうかを確認する必要があります。そうでない場合は、いくつかのオプションがあります。ビルド ユーザーに権限を付与するか、ユーザー名/パスワードを渡します。

値を渡したい場合は、名前付きのアイテムを定義するMsDeployDestinationProviderSetting必要があり、そのメタデータには必要な値が含まれている必要があります。

したがって、プロジェクト ファイルで (または渡されたプロパティを介して) 次のように定義します。

<PropertyGroup>
    <UserName>USERNAME-HERE</UserName>
    <Password>PASSWORD-HERE
</PropertyGroup>

前に述べたように、ドキュメントはどこで入手できますか。まだあまり公開されていません。ただし、Web パブリッシング パイプライン全体が MSBuild のターゲットとタスクに取り込まれているため、MSBuild に精通していれば、多くのことを独学で学ぶことができます。Visual Studio 2010 で作成された Web プロジェクトの .csproj (または .vbproj) ファイルを見ると、次のようなステートメントに気付くでしょう。

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

これにより、 にあるファイルがインポートされ %ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets、このファイルがインポートされます。 %ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets

したがって、このトピックを今すぐ詳細に学習するには、これらのファイルを調べて自分で学習する必要があります。


私はこれらの技術を詳細にカバーする何かに取り組んでいますが、それはかなり長い間公開されません。

ユーザー名とパスワードの取引を試してみて、うまくいったかどうか教えてもらえますか?

于 2010-04-15T02:55:20.857 に答える
6

私は同様の問題を抱えていましたが、解決策は次のパラメータを持つことでした:

/p:MSDeployPublishMethod= RemoteAgent

これが私が使用したすべてのパラメータです。

/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod= RemoteAgent /p:MsDeployServiceUrl= http://my-server-name /p:username=myusername /p:password=mypassword

注: 私は DeployIisAppPath を使用していません。ソリューションを構築していて、一度に 3 つの Web アプリケーションを構築しようとしているからです。また、MsDeployServiceUrl はhttp://staging.example.comにする必要があると思います

MSDeployPublishMethod に InProc (デフォルトの可能性があります) を使用すると、MSBuild は MsDeployServiceUrl を無視し、常にローカル サーバーにデプロイしようとするようです。これを RemoteAgent に変更すると、3 つの Web アプリケーションすべてが正常にデプロイされました。Package ファイルが MyWebApplication_Package フォルダーに含まれなくなったことに気付きましたが、それは私にとって大したことではありません。

于 2010-04-16T15:42:14.917 に答える
4

DeployTarget=Package を設定することもできることに注意してください。これにより、パッケージが準備されますが、すぐにはデプロイされません。詳細については、このブログ投稿を参照してください。

于 2010-05-18T19:10:33.507 に答える
3

これが私がそれを機能させる方法です。これは Webdeploy 2.0 で発生しました。ビルド マシンから開発 Web サーバー マシン Windows サーバー 2008 r2 に同じドメインにデプロイしています。デプロイに使用しているアカウントは、両方のマシンで管理者権限を持つドメインのサービス アカウントです。私のソリューションには、いくつかの単体テスト プロジェクト、mvc3 プロジェクト、およびソリューションの下のいくつかのライブラリが含まれています。展開するサーバーに MVC3 をインストールしない場合は、http: //www.iwantmymvc.com/2011-03-23-bin-deploy-aspnet-mvc-3-visual-studio を参考にしてください。

/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:DeployIisAppPath="Default Web Site/YourpplicationNameHere" /p:MsDeployServiceUrl=https://devserver02:8172/msdeploy.axd /p:AllowUntrustedCertificate=True /p:UserName =yourDomain\buildaccount /p:Password=パスワード

  1. 最初に苦労したのは、「Default Web Site/YourpplicationNameHere」の周りの引用符でした。これにより、部分的なエラーが発生します。

    MSBUILD : エラー MSB1008: 指定できるプロジェクトは 1 つだけです。

    これは、Default Web Site/YourApplicationNameHere の周りに引用符がない場合に発生します

  2. 次に発生したエラーは、展開用の資格情報のユーザー名とパスワードが間違っていたことが原因でした。このエラーが発生しました:

    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (3588): Web 配置タスクが失敗しました。 (リモート エージェント (URL https://devserver02:8172/) msdeploy.axd?site=既定の Web サイト) に接続できませんでした.ターゲット コンピュータにリモート エージェント サービスがインストールされ、開始されていることを確認してください.) サイト名、ユーザー名、およびパスワードが正しいことを確認してください. 問題が解決しない場合は、ローカルまたはサーバー管理者に連絡してください。エラーの詳細: リモート エージェント (URL https://devserver02:8172/msdeploy.axd?site=DefaultWeb サイト) に接続できませんでした。リモート エージェント サービスがターゲット コンピュータにインストールされ、開始されていることを確認します。サポートされていない応答を受け取りました。応答ヘッダー 'MSDeploy.Response' は '' でしたが、'v1' が予期されていました。リモート サーバーがエラーを返しました: (401) 権限がありません。

    これは、/p:UserName=/p:Password= にあったユーザー名とパスワードに、ユーザーのドメインが含まれていなかったためです。ビルドがそのユーザーの下で実行されていたとしても、デプロイされませんでした。そのため、ブラウザでhttps://devserver02:8172/msdeploy.axdに直接アクセスして、それが動作していることを確認し、ユーザー名とパスワードが機能していることを確認しました。これを機能させるには、ドメイン/ユーザーを入力する必要があることに気付きました。

これが返信しても問題ないことを願っていますこれらのエラーを見つけて他の貧しい魂を見つけたので、これが役立つかもしれません...

于 2011-05-02T15:45:33.507 に答える
3

私にとって問題は、Web Deployment Agent Service開始されていないことでした。

簡単net start msdepsvcに修正しました。このサービスでは、スタートアップ モードを [自動] に設定することもできます。

私が使用している引数は次のとおりです。

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:MSDeployPublishMethod=RemoteAgent 
/p:MSDeployServiceUrl=stagingserver 
/p:DeployIisAppPath=test.local 
/p:UserName=

フル パスではなく、サーバー名のみを指定する必要があります (http は必要ありません)。

UserName は、NTLM 認証のバグを回避するために空のままであることに注意してください (この方法では、展開に TFS ビルド エージェントの資格情報が使用されます)。ここで受け入れられた答えを見てください

于 2011-01-18T15:53:11.013 に答える
1

アプリケーションを fileCopy でデプロイできる場合は、そのように TFS ワークフローを簡単にカスタマイズできます。

これらの記事の助けを借りて、CopyDirectory アクティビティを使用しました。

http://www.ewaldhofman.nl/post/2010/11/09/Part-14-Execute-a-PowerShell-script.aspx

http://geekswithblogs.net/jakob/archive/2010/09/01/tfs-team-build-2010-how-to-place-the-build-output.aspx

非常にシンプルで簡単です。

  • 目的の共有に対する書き込み権限を持つユーザー アカウントでビルド サービスを構成しました。

  • 次に、CopyDirectory ワークフロー ステップを作成し、ソースを BuildDetail.DropLocation + "_PublishedWebsites" として構成し、宛先に対して、ビルド構成に入力できる "DeployPath" と呼ばれる引数を作成しました。

  • ここで、CopyDirectory アクティビティを呼び出す前に、ビルドが成功したかどうかを確認するテストを実装する必要があります。私が言及した記事は、その方法を示しています。また、CopyDirectory の代わりに powershell スクリプトを呼び出す方法も教えています。

于 2011-09-16T21:57:50.720 に答える