如何将代码生成合并到C#解决方案中?

时间:2009-04-12 18:09:46

标签: c# visual-studio build-process code-generation thrift

This question非常相似,但唯一的答案似乎并没有回答我的需求。)

我正在考虑在C#中使用Thrift,并且正在考虑构建过程的确切工作方式。 Visual Studio 2008中的C#项目是否支持生成C#类的自定义生成操作?

我找到了“自定义工具”选项,但我不确定它是我正在寻找的...它只允许设计时使用(不是构建过程的组成部分,而是右键单击“运行”自定义工具“)。

更新

Fionn建议的预建事件确实不是最理想的,因为它们不考虑依赖关系并延长构建过程。此外,它们是从中央位置而不是按文件管理的。

3 个答案:

答案 0 :(得分:2)

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

它们位于Visual Studio中“项目属性”的“构建事件”部分中。

如果您使用“编辑预构建...”按钮,它们也支持您将看到的一些宏。

答案 1 :(得分:1)

最简单和最安全的选择是将这一代包含在Fionn提及的“预建事件”中。优点:代码总是正确的,缺点:慢,因为这将意味着在每次编译时重新生成源代码,然后重建所有依赖项,因为生成的代码已更改。

另一种选择是手动重新生成代码文件,如果您有构建机器/持续集成,则重建每个构建的代码文件。优点:更快的构建,如果几乎没有变化缺点:过时生成的代码,以及浪费的调试时间试图解决什么是错误。

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

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

答案 2 :(得分:0)

MS Build具有高度可配置性。 Visual Studio本身也是very extensible。您可以使用CodeDOM发出类。根据您想要定制VS和构建过程的时间,您几乎无法做到。