【问题标题】:Receiving Events at Compile-Time?在编译时接收事件?
【发布时间】:2011-09-14 18:26:56
【问题描述】:

如何在编译时执行自定义代码?是否有一个属性可以用来标记静态方法,然后在每次构建时执行?

我很确定像 PostSharp 和 Moles 这样的库会做这样的事情。它们中的每一个似乎都为它们所引用的项目执行特殊的编译时例程。

编辑:我指的是由 Visual Studio 完成的编译类型,而不是 JIT。

【问题讨论】:

  • 在什么上下文中执行代码? VS 有 pre-build 和 post-build 步骤挂钩,允许您运行任意可执行文件,您还可以插入构建系统以获得额外的灵活性。但是在编译器的上下文中执行代码是不可能的。
  • 我的意思是每次编译一个引用项目时都会执行一些你在你的程序集中定义的任意代码。我想确保所有引用我的程序集的项目都在预构建时执行了一些代码,但不要求每个用户手动添加任何构建事件。
  • 这是一项艰巨的任务。听起来像是 VS 扩展领域,如果不付出大量努力并让用户安装二进制文件,肯定是无法实现的。
  • PostSharp 可以在运行时执行代码,但你真正想做的是什么?

标签: c# .net msbuild postsharp moles


【解决方案1】:

许多工具使用Custom Build Events 来处理更新和操作构建过程。这是一种相当简单的技术,可用于将您自己的逻辑放入构建过程中。

这不会查看您的代码 - 但您可以编写一个程序,使用反射来分析构建后的程序集并执行一些逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多