对于跨平台的asp.net 5开发,有没有T4模板和EnvDTE的替代品?

问题描述 投票:9回答:7

我们目前使用T4模板生成基于C#代码(实体POCO)和EDMX(在旧应用程序中)的C#代码文件

迁移到ASP.NET 5以支持跨平台开发,是否有任何代码生成工具可以读取项目类和元数据结构,并在设计时生成C#文件,类似于T4模板?

code-generation asp.net-core t4 entity-framework-core
7个回答
3
投票

甚至在asp.net-5项目中也不支持tt模板。它最近已添加(在Visual Studio 2015 Update 1中)。

讨论在这里:https://github.com/aspnet/Home/issues/272

在线程中,Eilon说Roslyn是分析代码并生成新代码的方式......他再次表示ASP团队没有立即计划。所以目前我们没有微软的解决方案。

但我做了一些搜索,没有找到任何跨平台社区工具来生成基于其他代码的代码。 :(


4
投票

yeoman似乎是个不错的选择。已经存在一些用于搭建asp.net 5应用程序的生成器,你可以使用create your own generators

它是跨平台的,可以在linux / mac / windows上使用。


4
投票

你可以尝试Scripty - 它是基于Roslyn的脚本。

  • * .csx文件的语法突出显示是开箱即用的;
  • 存在VS扩展以在保存时处理脚本;
  • MSBuild任务存在于构建过程中处理脚本;
  • 脚本允许您遍历项目的层次模型;
  • 支持从单个脚本生成多个文件;

0
投票

新的LeMP preprocessing engine for C#可以用作T4模板的替代品。请问“项目类和元数据结构”具体是什么意思?


0
投票

为此我创建了一个简单的python script called "autogen"

工作原理:脚本采用jinja模板文件(而不是T4)和数据文件(json),并根据模板生成一个或多个输出文件(例如C#或任何格式)。

如何使用(示例):描述json文件中的接口(方法,参数)定义,为C#,Java,Python等创建* .j2模板文件。然后运行autogen.py脚本和代理/存根的文件将创建所有语言。

这可以帮助创建许多类似的代码而无需复制/粘贴,只需更改单个json文件即可更改代码。

此外,它可以与构建管道,msbuild(.net,.net核心)集成,并且是跨平台的。


0
投票

Scriban为我工作,替代T4模板来生成单元测试代码。但它是一个纯粹的模板引擎。


0
投票

我一直在研究这种类似的事情,虽然不是专门用于ASP.NET MVC,但是当我转移到.Net Core时,不同的项目类型。我让T4早早依靠EDMX。这是因为EF7超越了文件格式而有利于代码。我计划用我的代码生成的地方是ScriptCS和C#REPL的组合。 Roslyn使我的生活变得复杂,因为根据我的理解,没有设计时装配。因此,诀窍可能是从项目中理解和内省cs文件。

© www.soinside.com 2019 - 2024. All rights reserved.