24

現在、Visual Studio 2012 を使用して Web プロジェクトでビルド後のイベントを次のように構成しています。

ここに画像の説明を入力

これは基本的にPowerShell スクリプトを呼び出して、すべての .cs ファイルに著作権表示を追加します。

私がやりたいことは、Web アプリをリモート サーバーに公開する前にのみ、この powershell スクリプトを実行することです。そうすることで、プロジェクトをデバッグする必要があるたびに遅延が発生することはありません。これを達成する方法を知っていますか?


Sayed's answerによると、特定の公開プロファイルをカスタマイズし、これを追加しました。

<PipelineDependsOn>
  CustomBeforePublish;
  $(PipelineDependsOn);
</PipelineDependsOn>
</PropertyGroup>
<Target Name="CustomBeforePublish">
<Message Text="******* CustomBeforePublish *******" Importance="high" />
<Exec Command="powershell.exe -file &quot;$(ProjectDir)\Copyright.ps1&quot;" />
</Target>
4

3 に答える 3

24

前にどのように定義するかによって異なりますが、以下に 1 つの手法を示します。

VS2012 で発行プロファイルを作成すると、Properties\PublishProfiles フォルダー ( VB の場合は My Project\PublishProfiles ) に .pubxml ファイルが作成されます。これらは MSBuild ファイルであり、編集して発行プロセスをカスタマイズできます。あなたの場合、公開が実際に行われる前に、公開プロセスにターゲットを挿入できます。以下のように PipelineDependsOn プロパティを拡張することでそれを行うことができます。

<PropertyGroup>
  <PipelineDependsOn>
    CustomBeforePublish;
    $(PipelineDependsOn);
  </PipelineDependsOn>
</PropertyGroup>

<Target Name="CustomBeforePublish">
  <Message Text="********************************** CustomBeforePublish ***********************************" Importance="high"/>
</Target>

参考までに、.wpp.targets のカスタマイズに関しては、それが VS2010 の唯一のテクニックでした。ここでの私の推奨事項は次のとおりです。ほとんどの場合に .pubxml ファイルをカスタマイズし、特定のプロジェクトのすべての発行をカスタマイズする場合にのみ .wpp.targets ファイルを作成します。

于 2012-10-16T17:45:30.550 に答える
4

ProjectName.wpp.targetsWeb アプリケーションのルートで次のファイルを宣言します。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <BeforeAddContentPathToSourceManifest>
      $(BeforeAddContentPathToSourceManifest);
      AddCopyright;
    </BeforeAddContentPathToSourceManifest>
  </PropertyGroup>

  <Target Name="AddCopyright">
    <!-- I recommend passing in $(_MSDeployDirPath_FullPath) to your script
         as the base path to search to avoid having to perform a VCS rollback 
         (files are copied there before the deployment)
     -->
    <Exec Command="powershell.exe -file &quot;$(SolutionDir)Copyright.ps1&quot; &quot;$(_MSDeployDirPath_FullPath)&quot;" />
  </Target>
</Project>
于 2012-10-16T05:54:28.450 に答える