2009-04-12 38 views
1

This question非常相似,但唯一的答案似乎并没有回答我的需求)。如何将代码生成并入C#解决方案?

我想在C#中使用Thrift,并正在考虑构建过程将究竟如何工作。 Visual Studio 2008中的C#项目是否支持生成C#类的自定义构建操作?

我找到了“自定义工具”选项,但我不知道这就是我要找的......它只允许设计时使用(没有被整合到构建过程,而是用鼠标右键单击“运行自定义工具“)。

更新菲昂建议

预生成事件确实是最理想的,因为他们没有考虑的依赖考虑,延长了构建过程。而且,它们是从中央位置而不是按文件进行管理的。

回答

2

如果您只是将您的代码生成到预生成事件中,该怎么办?

它们位于Visual Studio项目属性的“生成事件”部分。

此外,他们支持某些宏,你会看到,如果你使用“编辑预建...”按钮。

+0

这是非常不理想的,因为它会影响VS如何解决依赖于该项目的项目是否应该重建。 – 2009-04-12 18:19:25

0

MS Build是高度可配置的。 Visual Studio本身也是very extensible。您可以使用CodeDOM来发射类。根据你想要投入多少时间来定制VS和构建过程,几乎没有你做不到的事情。

1

最简单,最安全的办法是包括代“预生成事件”为菲昂提到。优点:代码总是正确的,缺点:慢,因为这意味着在每次编译时重新生成源代码,然后重新生成所有依赖项,因为生成的代码已被更改。

另一种方法是手动重新生成代码文件,如果你有一个构建机器/持续集成重建代码文件的每个版本。优点:如果几乎没有变化,则构建速度更快缺点:过时的生成代码以及尝试解决错误的浪费时间。

读取C#项目的帮助下,看来你需要一个插件,为您提供所需的自定义工具作用。但在C++项目中,您可以定义自己的自定义步骤MS-Help。因此,您可以开发一个VisualStudio插件(或找到一个)或将C++项目添加到您的解决方案中,并为该项目添加一个自定义构建步骤,然后将输出包括在正常的C#项目中。

第一个谷歌'visual studio custom tool code gen'有一个how-to write your own Custom Tool这将是一个很好的起点。

相关问题