非常に大規模なVS2012 Webサイトプロジェクト(Webアプリケーションではない)を継承し、その展開を自動化しようとしています。プロジェクトには多数の循環参照があるため、aspnet_compiler.exeを使用してプリコンパイルするには、fixednamesをオンにする必要があります。それに伴う問題は、クアッドコア、16GB RAM、SSD開発マシンでビルドに約20分かかることです。前の開発者は、ソース全体を運用Webサーバーにコピーするだけなので、これに対処する必要はありませんでした。
そのため、循環参照の問題に取り組む前に、msdeployを使用して少なくとも自動的にプロジェクトを展開したいと思います。 Visual Studio内で公開プロファイルを使用できますが、それはまさに私が望むことをします:
私の人生で理解できないのは、MSBuild.exeでまったく同じことを行う方法です。
MSBuild.exe WebProject.vs2012.sln /m /T:Build
/p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy
上記のコマンドは、aspnet_compilerを実行しようとしますが、これは私が望んでいるものではありません。パブリッシュプロファイルには、プリコンパイルすべきではないと書かれていますが、ログでは実行中です。
それでは、msbuildを使用して、Webサイトプロジェクトをプリコンパイルせずに展開するにはどうすればよいですか?
Webサイトプロジェクトの場合、公開プロセスはビルドプロセスに組み込まれていません。ウェブサイトプロジェクトの場合、正式なビルドプロセスがないため、実際に拡張するものはありませんでした。
注:以下のコンテンツには、VS 2012(またはその点でVS2010)とその上に Azure SDK が必要です。機能は、VS2012のRTMドロップに含まれていません。
VSで公開プロファイルを作成すると、次のものが作成されます。
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 で修正されているはずです。インストール後、不必要なプリコンパイル手順は表示されません。まだ表示される場合はお知らせください。
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
このスクリプトを含むバッチファイルを管理者権限で実行することを忘れないでください。