Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#编译/编译前生成c#代码(如java中的maven插件)_C#_Code Generation_Pre Build Event - Fatal编程技术网

c#编译/编译前生成c#代码(如java中的maven插件)

c#编译/编译前生成c#代码(如java中的maven插件),c#,code-generation,pre-build-event,C#,Code Generation,Pre Build Event,我在c#net中有一个项目。 我需要挂接“预构建”事件,以便运行一个c#类,该类将生成同一项目的其他c#类。 我知道在java中可以使用maven插件生成源代码,在.net中是否可能 谢谢。听起来像你想要的。至少有两种选择: 使用 向生成文件中添加预生成步骤 T4是进行代码生成的内置方式(广泛用于ASP.NET MVC脚手架和实体框架类型生成)。但是T4不直接支持编译时生成。它要么在设计时(由开发人员触发(重新)生成),要么在运行时生成;(第三方工具可以添加编译时生成) Adendum(6年后

我在c#net中有一个项目。
我需要挂接“预构建”事件,以便运行一个c#类,该类将生成同一项目的其他c#类。
我知道在java中可以使用maven插件生成源代码,在.net中是否可能


谢谢。

听起来像你想要的。

至少有两种选择:

  • 使用
  • 向生成文件中添加预生成步骤
  • T4是进行代码生成的内置方式(广泛用于ASP.NET MVC脚手架和实体框架类型生成)。但是T4不直接支持编译时生成。它要么在设计时(由开发人员触发(重新)生成),要么在运行时生成;(第三方工具可以添加编译时生成)


    Adendum(6年后):NuGet包也可以这样做

    可以使用自定义MSBuild任务(包括运行外部程序)创建代码,然后将其包含在编译中。在最简单的情况下,可以使用项目的“预构建”设置(项目属性的“构建事件”选项卡)。直接在MSBuild中工作(并且
    .csproj
    是MSBuild文件)提供了更大的灵活性。

    请尝试。它是VisualStudio的一个插件,公开了内置功能,因此您可以使用它自动生成C#文件。它支持在Visual Studio中编译时生成C#代码

    我用它在编译时将一个.xml文件转换成2600行C#。现在,如果我更改.xml文件并重新编译,它将自动重新生成正确的C代码


    它像魔术一样工作,并且是完全无缝的。

    有一些模板,可能适合?T4确实支持使用有形的T4编辑器(参见上面的答案)编译时生成C#代码。@Gravitas OK补充了一个注意事项,即第三方工具可以添加编译时生成。