最近提到 PostSharp 让我想起了这一点:
去年在我工作的地方,我们考虑使用 PostSharp 将检测注入(inject)我们的代码。这是在 Team Foundation Server Team Build/Continuous Integration 环境中进行的。
考虑到这一点,我对 PostSharp 的运行方式产生了一种挥之不去的感觉——它编辑由编译器生成的 IL。这让我有点困扰。
我不太担心 PostSharp 不能正确地完成它的工作;我很担心这是我第一次听说这样的工具。我担心其他工具可能不会考虑到这一点。
事实上,随着我们的推进,我们确实遇到了一些问题,原因是 PostSharp 对原始 IL 所在的文件夹感到困惑。这破坏了我们的构建。这似乎是由于与解析项目引用的 MSBUILD 目标发生冲突。冲突似乎是由于 PostSharp 使用临时目录来存储 IL 的未修改版本。
无论如何,那时我没有 StackOverflow 可以引用!既然我这样做了,我想问问你们大家是否知道在构建过程中编辑 IL 的任何其他工具;或者 Microsoft 是否在 Visual Studio、MSBUILD、Team Build 等中考虑了此类工具。
更新:感谢您的回答。
底线似乎是,至少对于 VS 2010,Microsoft 确实应该意识到这种事情可能会发生。因此,如果 VS2010 中出现这方面的问题,那么微软可能会分担责任。
最佳答案
我知道 Mono.Cecil ,一个扩展 System.Reflection 工具集的框架库,它被 Lin 使用Fu项目。
我不确定构建过程支持,你应该检查它们的大小。
关于c# - 哪些工具执行 IL 的编译后修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1137426/