对于跨平台 asp.net 5 开发,是否有 T4 模板和 EnvDTE 的替代方案?
Are there any alternatives to T4 templates and EnvDTE for cross platform asp.net 5 development?
我们目前使用 T4 模板生成基于 C# 代码(实体 POCO)和 EDMX(在旧应用程序中)的 C# 代码文件
移动到 ASP.NET 5 以支持跨平台开发,是否有可用的代码生成工具可以读取项目 class 和元数据结构,并在以下位置生成 C# 文件设计时,类似于 T4 模板?
yeoman seems to be a good option. There exist some generators already for scaffolding asp.net 5 apps and you can create your own generators
它是跨平台的,可以在 linux/mac/windows 上使用。
asp.net-5 项目早期甚至不支持 tt 模板。它是最近添加的(in Visual Studio 2015 Update 1)。
讨论在这里:https://github.com/aspnet/Home/issues/272
并且在线程中,Eilon 表示 Roslyn 是分析代码和生成新代码的方式...他再次表示 ASP 团队没有近期计划。所以目前我们没有来自微软的解决方案。
但是我做了一些搜索并没有找到任何跨平台社区工具来基于其他代码生成代码。 :(
我一直在研究同样的事情,虽然不是专门针对 ASP.NET MVC,而是在我转向 .Net Core 时跨项目类型。我很早就让我的 T4 依赖 EDMX。这是可行的,因为 EF7 超越了文件格式以支持代码。我计划进行代码生成的地方是 ScriptCS and C# REPL 的组合。 Roslyn 对我来说有点复杂,因为据我所知没有设计时程序集。所以诀窍可能是从项目内部理解和反省 cs 文件。
新的 LeMP preprocessing engine for C# 可以作为 T4 模板的替代品。请问"projects class & meta data structures"具体是什么意思?
您可以尝试 Scripty - 它是基于 Roslyn 的脚本。
- *.csx 文件的语法突出显示开箱即用;
- 存在 VS 扩展以在保存时处理脚本;
- 存在 MSBuild 任务以在构建过程中处理脚本;
- 脚本允许您遍历项目的分层模型;
- 支持从单个脚本生成多个文件;
为此,我创建了一个简单的 python
script called "autogen".
工作原理:脚本采用 jinja 模板文件(而不是 T4)和数据文件 (json) 并生成一个或多个输出文件(例如 C# 或任何格式)在模板上。
如何使用(示例):在 json 文件中描述接口(方法、参数)定义,为 C# 创建 *.j2 模板文件,Java,Python等。然后将创建 运行 autogen.py 所有语言的 proxy/stub 脚本和文件。
这有助于在没有 copy/pasting 的情况下创建大量类似代码,并通过简单地更改单个 json 文件来更改代码。
而且可以和build pipiline, msbuild (.net, .net core)集成,跨平台
Scriban 为我工作,作为替代 T4 模板生成单元测试代码的替代方法。但它是一个纯粹的模板引擎。
我们目前使用 T4 模板生成基于 C# 代码(实体 POCO)和 EDMX(在旧应用程序中)的 C# 代码文件
移动到 ASP.NET 5 以支持跨平台开发,是否有可用的代码生成工具可以读取项目 class 和元数据结构,并在以下位置生成 C# 文件设计时,类似于 T4 模板?
yeoman seems to be a good option. There exist some generators already for scaffolding asp.net 5 apps and you can create your own generators
它是跨平台的,可以在 linux/mac/windows 上使用。
asp.net-5 项目早期甚至不支持 tt 模板。它是最近添加的(in Visual Studio 2015 Update 1)。
讨论在这里:https://github.com/aspnet/Home/issues/272
并且在线程中,Eilon 表示 Roslyn 是分析代码和生成新代码的方式...他再次表示 ASP 团队没有近期计划。所以目前我们没有来自微软的解决方案。
但是我做了一些搜索并没有找到任何跨平台社区工具来基于其他代码生成代码。 :(
我一直在研究同样的事情,虽然不是专门针对 ASP.NET MVC,而是在我转向 .Net Core 时跨项目类型。我很早就让我的 T4 依赖 EDMX。这是可行的,因为 EF7 超越了文件格式以支持代码。我计划进行代码生成的地方是 ScriptCS and C# REPL 的组合。 Roslyn 对我来说有点复杂,因为据我所知没有设计时程序集。所以诀窍可能是从项目内部理解和反省 cs 文件。
新的 LeMP preprocessing engine for C# 可以作为 T4 模板的替代品。请问"projects class & meta data structures"具体是什么意思?
您可以尝试 Scripty - 它是基于 Roslyn 的脚本。
- *.csx 文件的语法突出显示开箱即用;
- 存在 VS 扩展以在保存时处理脚本;
- 存在 MSBuild 任务以在构建过程中处理脚本;
- 脚本允许您遍历项目的分层模型;
- 支持从单个脚本生成多个文件;
为此,我创建了一个简单的 python script called "autogen".
工作原理:脚本采用 jinja 模板文件(而不是 T4)和数据文件 (json) 并生成一个或多个输出文件(例如 C# 或任何格式)在模板上。
如何使用(示例):在 json 文件中描述接口(方法、参数)定义,为 C# 创建 *.j2 模板文件,Java,Python等。然后将创建 运行 autogen.py 所有语言的 proxy/stub 脚本和文件。
这有助于在没有 copy/pasting 的情况下创建大量类似代码,并通过简单地更改单个 json 文件来更改代码。
而且可以和build pipiline, msbuild (.net, .net core)集成,跨平台
Scriban 为我工作,作为替代 T4 模板生成单元测试代码的替代方法。但它是一个纯粹的模板引擎。