web-dev-qa-db-ja.com

msbuildを使用したasp.netビューのプリコンパイル

Visual Studioを介してasp.netアプリケーションを展開すると、Precompile during publishとチェックボックスをオフにしますAllow precompiled site to be updateable

そして、私はmsbuildツールで同じことをしたいのですが、/p:MvcBuildViews=true /p:EnableUpdateable=falseですが、IISに移動してビューを開いても、コンテンツが残っているため、プリコンパイルされていません。

彼らはThis is a marker file generated by the precompilation tool VSから公開するときと同じように。何か不足していますか?

10
Aleksa

Msビルドを使用したasp.netビューのプリコンパイル

/p:PrecompileBeforePublish=trueの代わりに引数/p:MvcBuildViews=trueを使用する必要があります。

MvcBuildViewsは、アクティブ化するとプリコンパイル済みビューが生成されるものと誤って見なされることがよくあります。実は。ビルドプロセスにビューを含めるだけのものですが、これらをプロジェクトバイナリフォルダーにコンパイルしません。

チェックボックスPrecompile during publishをオンにし、ファイル公開オプションのチェックボックスAllow precompiled site to be updateableをオフにすると、FolderProfile.pubxmlファイルで次のプロパティ設定が取得されます。

  <PropertyGroup>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>False</EnableUpdateable>
  </PropertyGroup>

したがって、msbuildツールで同じことを行う場合は、引数を使用する必要があります。

/p:PrecompileBeforePublish=true;EnableUpdateable=false

さらに、これらの引数は.pubxmlファイル(ソリューションエクスプローラーのプロパティノードのPublishProfilesの下)に格納されているためです。現在は、チェックインしてチームメンバーと共有できるように設計されています。これらのファイルはMSBuildファイルになり、必要に応じてカスタマイズできます。コマンドラインから公開するには、DeployOnBuild=trueを渡して、PublishProfileをプロファイルの名前に設定します。

msbuild.exe "TestPrecompiled.csproj" /p:DeployOnBuild=true /p:PublishProfile=FolderProfile.pubxml

もちろん、引数と.pubxmlファイルを同時に使用できます。コマンドラインの引数は、.pubxmlファイルのプロパティを上書きします。

msbuild.exe "TestPrecompiled.csproj" /p:DeployOnBuild=true /p:PublishProfile=FolderProfile.pubxml /p:PrecompileBeforePublish=true;EnableUpdateable=false

公開が完了したら、publishフォルダーの.cshtmlファイルを開きます。VSから公開する場合と同様に、This is a marker file generated by the precompilation tool, and should not be deleted!という行が表示されます。

enter image description here

enter image description here

詳細については、 MSBuildを使用したASP.NET WebフォームおよびMVCビューのプリコンパイル を参照してください。

27
Leo Liu-MSFT