如何在visual studio中更改我的后期编译器的顺序?
具体来说,我想在Postsharp之后使代码合同发布后发生。默认情况下,它是相反的。
答案 0 :(得分:2)
也许这会指向正确的方向:
PostSharp由Program Files\PostSharp 2.1\PostSharp.targets
包含在Program Files\MSBuild\v4.0\Custom.After.Microsoft.Common.targets
包含在Windows\Microsoft.NET\Framework\v4.0\Microsoft.Common.targets
包含在Windows\Microsoft.NET\Framework\v4.0\Microsoft.CSharp.targets
包含在YourProject.csproj
必须有像
这样的东西 <Import Project="$(ContractsPath)\Microsoft.Contract.targets" />
围绕所有以前的文件。找到它并将其放在行之后
<Import Project="C:\Program Files (x86)\PostSharp 2.1\PostSharp.targets" Condition=" '$(DontImportPostSharp)' == '' AND Exists('C:\Program Files (x86)\PostSharp 2.1\PostSharp.targets')" />
Custom.After.Microsoft.Common.targets
中并尝试编译。
注意:替换版本和目录以匹配您的环境和安装路径。
答案 1 :(得分:2)
首先,不推荐在CodeContracts重写器之前执行PostSharp重写器,因为CodeContracts重写器在PostSharp更改后可能无法理解输入程序集。
以下是如果您仍想要操作它,如何确定构建步骤顺序的说明。
PostSharp使用标准MSBuild扩展点将自身插入到构建过程中 - &#34; DependsOn&#34;属性,如MSDN上所述:How to: Extend the Visual Studio Build Process。
特别是被覆盖的属性&#34; CompileDependsOn&#34;在编译步骤后插入PostSharp后编译器。你可以在PostSharp.targets文件中找到这篇文章:
<CompileDependsOn>
PostSharp30TimestampBeforeCompile;
$(CompileDependsOn);
PostSharp30TimestampAfterCompile;
PostSharp30
</CompileDependsOn>
要调试整个构建过程,您可以在&#34;工具&#34;中启用MSBuild的诊断详细程度。 - &GT; &#34;选项&#34; - &GT; &#34;项目和解决方案&#34; - &GT; &#34;构建并运行&#34;。查找字符串&#34; CompileDependsOn =&#34;在构建输出中查看构建步骤的顺序。 CodeContractInstrument将在此列表中的PostSharp30之前。
您可以操纵&#34; CompileDependsOn&#34;的值。构建/项目文件中的属性,用于更改任务的顺序。