哪些工具执行IL的后编译修改?

Joh*_*ers 5 c# postsharp intermediate-language

最近提到的PostSharp让我想起了这个:

去年我工作的地方,我们正在考虑使用PostSharp将检测注入我们的代码中.这是在Team Foundation Server团队构建/持续集成环境中.

考虑到这一点,我对PostSharp的运行方式产生了一种唠叨的感觉 - 它编辑了编译器生成的IL.这让我感到困扰.

我并不担心PostSharp不能正常工作; 我很担心这是我第一次回忆起这样的工具.我担心其他工具可能不会考虑到这一点.

事实上,随着我们前进,我们确实遇到了一些问题,因为PostSharp对原始IL所处的文件夹感到困惑.这打破了我们的构建.它似乎是由于与MSBUILD目标的冲突解决了项目引用.冲突似乎是由于PostSharp使用临时目录来存储IL的未修改版本.

无论如何,我当时没有StackOverflow来引用!既然我这样做了,我想问你们所有人是否知道编辑IL作为构建过程的一部分的任何其他工具; 或者Microsoft是否在Visual Studio,MSBUILD,Team Build等中考虑了这种工具.


更新:感谢您的回答.

最重要的是,至少在VS 2010中,微软真的应该意识到这种事情会发生.因此,如果在VS2010中存在这方面的问题,那么微软可能会分担责任.

Joe*_*rle 3

我确实知道 Dotfuscator(一种代码混淆器)确实修改了程序集程序集的 IL,并且在许多构建过程中使用它。

IL 的修改不仅是为了代码混淆和保护,还为了向您的应用程序注入附加功能(请参阅我们 (PreEmptive) 的有关运行时智能的博客文章

此外,微软的通用编译器基础设施能够读取程序集、修改它们并重写它们。请参阅CodePlex了解该项目。