web-dev-qa-db-ja.com

コマンドラインmsbuildを使用して、VS2012 Webサイトプロジェクトをプリコンパイルせずに展開する方法は?

非常に大規模なVS2012 Webサイトプロジェクト(Webアプリケーションではない)を継承し、その展開を自動化しようとしています。プロジェクトには多数の循環参照があるため、aspnet_compiler.exeを使用してプリコンパイルするには、fixednamesをオンにする必要があります。それに伴う問題は、クアッドコア、16GB RAM、SSD開発マシンでビルドに約20分かかることです。前の開発者は、ソース全体を運用Webサーバーにコピーするだけなので、これに対処する必要はありませんでした。

そのため、循環参照の問題に取り組む前に、msdeployを使用して少なくとも自動的にプロジェクトを展開したいと思います。 Visual Studio内で公開プロファイルを使用できますが、それはまさに私が望むことをします:

  1. 参照されたDLLをビルドし、プロジェクトに追加します。
  2. Web.configは変換しますか。
  3. ウェブサイトを構築しようとはしませんが、Zipファイルにパッケージ化するだけです。

私の人生で理解できないのは、MSBuild.exeでまったく同じことを行う方法です。

MSBuild.exe WebProject.vs2012.sln /m /T:Build 
    /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy

上記のコマンドは、aspnet_compilerを実行しようとしますが、これは私が望んでいるものではありません。パブリッシュプロファイルには、プリコンパイルすべきではないと書かれていますが、ログでは実行中です。

それでは、msbuildを使用して、Webサイトプロジェクトをプリコンパイルせずに展開するにはどうすればよいですか?

35
Paul Lemke

Webサイトプロジェクトの場合、公開プロセスはビルドプロセスに組み込まれていません。ウェブサイトプロジェクトの場合、正式なビルドプロセスがないため、実際に拡張するものはありませんでした。

注:以下のコンテンツには、VS 2012(またはその点でVS2010)とその上に Azure SDK が必要です。機能は、VS2012のRTMドロップに含まれていません。

VSで公開プロファイルを作成すると、次のものが作成されます。

  1. App_Data/PublishProfilesの下の公開プロファイル(.pubxmlファイル)
  2. Webサイトのルートにあるwebsite.publishproj

website.publishprojの目的は、コマンドラインでの公開を容易にすることです。これは、Web Appプロジェクトを使用するときに通常取得する.csproj/.vbprojの入力です。

公開を自動化する場合は、次のようなコマンドを使用できます。

msbuild.exe website.publishproj /p:DeployOnBuild=true 
   /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0

起動するターゲットを指定する必要はありません。

サイトがプリコンパイルされているというVSのメッセージに関して、それはバグです。プリコンパイルを実行しますが、公開はプロファイルの設定を使用します。このバグは Visual Studio Update 1 で修正されているはずです。インストール後、不必要なプリコンパイル手順は表示されません。まだ表示される場合はお知らせください。

54

Sayed Ibrahim Hashimiの答えは私をいくらか助けましたが、VS2012に必要であることがわかったのは次のとおりです。

Azure SDKをインストールした後、プロジェクトのPublishProfilesフォルダーにPropertiesフォルダーを作成するファイル発行プロファイルを作成しました。この新しいフォルダー内に、my_sample_PublishProfile_Foo.pubxmlおよびmy_sample_PublishProfile_Foo.pubxml.userという名前の2つのxmlファイルが作成されます。

.pubxmlを使用して、次のようにmsbuildで公開できます。

c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "C:\...\UI.csproj" /p:DeployOnBuild=true /p:PublishProfile="C:\...\PublishProfiles\my_sample_PublishProfile_Foo.pubxml"  /p:VisualStudioVersion=11.0

このスクリプトを含むバッチファイルを管理者権限で実行することを忘れないでください。

1
callisto