38

非常に大きな VS2012 Web サイト プロジェクト (Web アプリケーションではない) を継承し、その展開を自動化しようとしています。プロジェクトには大量の循環参照があるため、aspnet_compiler.exe を使用してプリコンパイルするには、fixednames を有効にする必要があります。これに伴う問題は、クアッド コア、16 GB 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 サイト プロジェクトをプリコンパイルせずに展開するにはどうすればよいでしょうか。

4

2 に答える 2

57

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

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

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

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

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

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

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

呼び出すターゲットを指定する必要はありません。

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

于 2013-02-11T21:12:02.377 に答える
1

Sayed Ibrahim Hashimi の回答は多少役に立ちましたが、VS2012 に必要であることがわかったのは次のとおりです。

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

.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

このスクリプトを含むバッチ ファイルは、必ず管理者権限で実行してください。

于 2014-07-09T14:31:35.827 に答える