【发布时间】:2011-09-14 18:26:56
【问题描述】:
如何在编译时执行自定义代码?是否有一个属性可以用来标记静态方法,然后在每次构建时执行?
我很确定像 PostSharp 和 Moles 这样的库会做这样的事情。它们中的每一个似乎都为它们所引用的项目执行特殊的编译时例程。
编辑:我指的是由 Visual Studio 完成的编译类型,而不是 JIT。
【问题讨论】:
-
在什么上下文中执行代码? VS 有 pre-build 和 post-build 步骤挂钩,允许您运行任意可执行文件,您还可以插入构建系统以获得额外的灵活性。但是在编译器的上下文中执行代码是不可能的。
-
我的意思是每次编译一个引用项目时都会执行一些你在你的程序集中定义的任意代码。我想确保所有引用我的程序集的项目都在预构建时执行了一些代码,但不要求每个用户手动添加任何构建事件。
-
这是一项艰巨的任务。听起来像是 VS 扩展领域,如果不付出大量努力并让用户安装二进制文件,肯定是无法实现的。
-
PostSharp 可以在运行时执行代码,但你真正想做的是什么?
标签: c# .net msbuild postsharp moles