C# 我可以更改后期编译器的顺序吗?

C# 我可以更改后期编译器的顺序吗?,c#,visual-studio,code-contracts,postsharp,C#,Visual Studio,Code Contracts,Postsharp,如何在visual studio中更改后期编译器的顺序 具体来说,我想让代码契约在编译后发生在Postsharp之后。默认情况下,情况正好相反。也许这会为您指明正确的方向: PostSharp由程序文件\PostSharp 2.1\PostSharp.targets执行 它包含在程序文件\MSBuild\v4.0\Custom.After.Microsoft.Common.targets中 它包含在Windows\Microsoft.NET\Framework\v4.0\Microsoft.Co

如何在visual studio中更改后期编译器的顺序


具体来说,我想让代码契约在编译后发生在Postsharp之后。默认情况下,情况正好相反。

也许这会为您指明正确的方向:

PostSharp由
程序文件\PostSharp 2.1\PostSharp.targets执行

它包含在
程序文件\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

一定有类似的东西

所有以前的文件的某个地方。找到它并把它放在后面

Custom.After.Microsoft.Common.targets中,尝试编译


注意:替换版本和目录以匹配您的环境和安装路径。

这可能会为您指明正确的方向:

PostSharp由
程序文件\PostSharp 2.1\PostSharp.targets执行

它包含在
程序文件\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

一定有类似的东西

所有以前的文件的某个地方。找到它并把它放在后面

Custom.After.Microsoft.Common.targets中,尝试编译


注意:替换版本和目录以匹配您的环境和安装路径。

首先,不建议在CodeContracts rewriter之前执行PostSharp rewriter,因为CodeContracts rewriter可能无法理解PostSharp更改后的输入程序集

下面是如何确定构建步骤顺序的解释,如果您仍然想要操作它

PostSharp使用标准MSBuild扩展点“DependsOn”属性将自身插入到生成过程中,如MSDN上所述:

特别是被重写的属性“CompiledPendson”在编译步骤后插入PostSharp post编译器。您可以在PostSharp.targets文件中找到此片段:

<CompileDependsOn>
  PostSharp30TimestampBeforeCompile;
  $(CompileDependsOn);
  PostSharp30TimestampAfterCompile;
  PostSharp30
</CompileDependsOn>

编译前的后期处理;
美元(已编撰);
后编译;
后夏普30
要调试整个生成过程,可以在“工具”->“选项”->“项目和解决方案”->“生成和运行”中启用MSBuild的诊断详细性。在生成输出中查找字符串“compiledPendson=”以查看生成步骤的顺序。CodeContractInstrument将位于此列表中的PostSharp30之前


您可以操纵生成/项目文件中“CompiledPendson”属性的值来更改任务的顺序。

首先,不建议在CodeContracts rewriter之前执行PostSharp rewriter,因为CodeContracts rewriter可能无法理解PostSharp更改后的输入程序集

下面是如何确定构建步骤顺序的解释,如果您仍然想要操作它

PostSharp使用标准MSBuild扩展点“DependsOn”属性将自身插入到生成过程中,如MSDN上所述:

特别是被重写的属性“CompiledPendson”在编译步骤后插入PostSharp post编译器。您可以在PostSharp.targets文件中找到此片段:

<CompileDependsOn>
  PostSharp30TimestampBeforeCompile;
  $(CompileDependsOn);
  PostSharp30TimestampAfterCompile;
  PostSharp30
</CompileDependsOn>

编译前的后期处理;
美元(已编撰);
后编译;
后夏普30
要调试整个生成过程,可以在“工具”->“选项”->“项目和解决方案”->“生成和运行”中启用MSBuild的诊断详细性。在生成输出中查找字符串“compiledPendson=”以查看生成步骤的顺序。CodeContractInstrument将位于此列表中的PostSharp30之前

您可以操纵生成/项目文件中“CompiledPendson”属性的值来更改任务的顺序