预处理C#-检测方法

预处理C#-检测方法,c#,visual-studio-2005,aop,postsharp,mono.cecil,C#,Visual Studio 2005,Aop,Postsharp,Mono.cecil,我需要能够预处理大量C#文件,作为项目的预构建步骤,检测方法的开始,并在方法开始时插入生成的代码,然后再插入任何现有代码。但是,我在检测方法的打开时遇到问题。我最初尝试使用正则表达式进行匹配,但最终出现了太多的误报 我会使用反射,但MethodInfo类不引用原始源中的点 编辑:我在这里真正想做的是支持方法上的前置条件,该前置条件代码由方法上的属性确定。我最初的想法是,我可以寻找方法的开头,然后插入生成的代码来处理前置条件 有更好的方法吗?如果需要,我愿意创建Visual Studio插件 这是

我需要能够预处理大量C#文件,作为项目的预构建步骤,检测方法的开始,并在方法开始时插入生成的代码,然后再插入任何现有代码。但是,我在检测方法的打开时遇到问题。我最初尝试使用正则表达式进行匹配,但最终出现了太多的误报

我会使用反射,但MethodInfo类不引用原始源中的点

编辑:我在这里真正想做的是支持方法上的前置条件,该前置条件代码由方法上的属性确定。我最初的想法是,我可以寻找方法的开头,然后插入生成的代码来处理前置条件

有更好的方法吗?如果需要,我愿意创建Visual Studio插件

这是一个.NET2.0项目

干杯

PostSharp或将允许您通过修改生成的代码来实现这一点,而无需编写C#解析器,因为C#解析器不太可能是您的核心业务

我还没有对PostSharp做过任何重要的事情,但我猜它比Mono更适合于实现诸如预条件或AOP之类的东西。或者,您也可以使用DI容器执行AOPy操作,如

但当然,这个想法的适用性取决于-你没有说太多,除了你想在方法的开始插入代码

编辑:根据你的愿望做前提条件。。。肯定是朝那个方向的


你有什么样的工具?一个Mono.Cecil.dll发货有什么问题?无论哪种方式,解析器以外的东西都是完成这项工作的工具。

我相信有一种更简单的方法,但这可能是一个很好的借口

我快速浏览了PostSharp-看起来不错,但我不希望为了让它正常工作而随产品提供第三方库…如果您不想提供第三方库,请使用ILMerge将这些程序集合并到您的程序集中。您可以使用后期构建步骤来实现这一点。但是,我假设每个需要使用这些先决条件进行构建的开发人员都需要安装PostSharp?代码契约不适合吗?如果您要发布流程代码,则需要在每次构建之后运行一些东西(但它可以像在构建脚本中引用一些东西一样简单)。请看一些有关如何将PostSharp集成到构建中的演练。如果你想要基于属性的代码生成,它不是免费的,但是你愿意考虑解析C ^,所以你必须愿意承受一些痛苦:你提到的.NET 2限制,我建议你去看看PASTHARP,包括一个你如何将它集成到构建脚本的视频。PAlso看看最近的平衡帖子(twitterverse则是相反的观点:P)