0

AfterThought と呼ばれるPostSharpの代替手段を使用して、ソリューション内のいくつかのプロジェクトを後処理しています。残念ながら、ビルド後のイベントが発生してポストプロセッサが実行される前に、コンパイルされたアセンブリがいくつかの依存プロジェクトにコピーされるため、プロジェクトのビルド後のイベント コマンド ライン プロパティは、ポストプロセッサをプラグインする適切な拡張ポイントではないようです。 . 問題が Web サイトおよび Web サービス プロジェクトでのみ発生するのは興味深いことです。依存するクラス ライブラリが後処理されたバージョンのアセンブリを取得しましたが、問題の核心は、ビルド後のイベントの呼び出しが遅すぎたためだと思います。別のイベントを使用します。

したがって、プロジェクトのビルド プロセス/MSBuild を *.csproj ファイルで直接強化する必要があると思いますが、そうですか? また、コマンド ライン アセンブリ ポスト プロセッサの呼び出しに適したビルド イベントは何ですか?

4

2 に答える 2

0

私の問題の最終的な解決策は、CompileDependsOnターゲットです。

  <Target Name="AfterThought">
    <Exec Command="&quot;$(SolutionDir)..\LIBS\Afterthought\Afterthought.Amender.exe&quot; &quot;@(IntermediateAssembly->'%(FullPath)')&quot; &quot;$(SolutionDir)..\Amendments\bin\$(Configuration)\Amendments.dll&quot; @(ReferencePath->'&quot;%(RootDir)%(Directory).&quot;', ' ')" />
  </Target>
  <PropertyGroup>
    <CompileDependsOn>
    $(CompileDependsOn);
    AfterThought;
   </CompileDependsOn>
  </PropertyGroup>
于 2012-05-14T07:08:48.107 に答える
0

二つあります:

  • <Target Name="AfterBuild"MSBuildコマンドを実行します
  • <PropertyGroup><PostBuildEvent>シェルコマンドを実行し、VisualStudioのプロジェクトダイアログから[ビルドイベント]タブの[ビルド後のイベントコマンドライン]としてアクセスできます。
于 2012-05-06T15:06:41.213 に答える