0

我正在使用名为AfterThought的 PostSharp 替代方案对我的解决方案中的一些项目进行后处理。不幸的是,看起来项目的构建后事件命令行属性不是插入后处理器的正确扩展点,因为编译的程序集在构建后事件被触发和后处理器运行之前被复制到一些依赖项目中. 有趣的是,这个问题只发生在网站和 Web 服务项目上——依赖的类库得到了程序集的后处理版本,但我想问题的核心是构建后事件被调用得太晚了,我应该使用不同的事件。

所以我想我需要直接在 *.csproj 文件中增强我的项目的构建过程/MSBuild - 对吗?什么构建事件是调用命令行汇编后处理器的正确事件?

4

2 回答 2

0

那里有两个:

  • <Target Name="AfterBuild"将运行 MSBuild 命令
  • <PropertyGroup><PostBuildEvent>将运行 shell 命令,并且可以从 Visual Studio 的项目对话框中作为“构建事件”选项卡下的“构建后事件命令行”访问
于 2012-05-06T15:06:41.213 回答
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 回答