问题标签 [t4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - MVC T4 MvcTextTemplateHost 和自定义的“控制器”T4 模板
我正在创建我自己的自定义 T4 模板,该模板与我的 MVC Web 应用程序中包含的 ADO.NET 实体框架模型(.edmx 文件)集成。
以供参考
请简单看一下以下两个网址。
- Scott Hanselman - “ T4 代码生成 Visual Studio 最佳保密”
- Visual Web Developer Team Blog - ASP.NET MVC 开发人员快速入门指南
我要实现的目标的简短描述
使用 T4 引擎基于 ADO.NET 实体框架模型的主键生成具有 Action 方法的 MVC 控制器类。
我现在拥有的
- MVC T4 模板文件(例如,Controller.tt、Create.tt 等)已包含在我的 MVC Web 项目中。
- 我在“模型”文件夹中有一个 ADO.NET 实体框架MyModel.edmx 文件。
基于控制器名称(例如“ProductController”),我想从 ADO.NET Entity Framework 模型中检索“Product”类的[System.Type]信息。我希望能够以与 MVC View T4 文件(例如 Edit.tt)相同的方式检索System.Type信息,如下所示。
最终目标
我想创建控制器方法代码生成以通过反射从 ADO.NET 实体框架类中读取主键信息等,并为 EDIT、DETAILS、ADD 操作
等
生成基本的 CRUD 操作和方法签名......
我被困在哪里
但是,正如您从ASP.NET MVC 开发人员快速入门指南文章中看到的那样,我无法检索控制器T4 模板的[System.Type],因为MvcTextTemplateHost类仅公开了用于创建 MVC 视图的ViewDataType属性。
我通过以下技术检索 [System.Type] 的尝试不起作用,因为modelType被返回为null意味着它找不到类型。
我假设发生这种情况是因为实体框架模型包含在我的 MVC Web 项目中,而不是包含在已编译的 .DLL 库程序集中。
一些可以帮助我找到解决方案的事情
- 在哪里可以找到MvcTextTemplateHost类的源代码?如果我至少可以找到 DLL 文件,我大概可以查看代码如何加载在 Visual Studio “添加视图”对话框窗口中输入的类型信息。
- 有没有办法通过 Visual Studio IDE API 从我的 T4 模板动态检索 Visual Studio 项目中包含的类的 System.Type 信息?
如果有人能在这个主题上帮助我,我将不胜感激,因为这将允许我为 ADD、EDIT、DETAILS 等的 MVC 控制器操作方法生成 75% 的代码以及基本的 CRUD 操作代码。
vb.net - VBv3.5 在调用 ProcessTemplate 方法时包含指令 throw 的错误
我试图通过 T4 生成一些代码,当我在模板中包含 <#@ template language="VBv3.5"#> 指令时收到以下错误。
vbc:命令行(0,0):错误BC2006:编译转换:选项'r'需要':(file_list)
如果我使用 <#@ template language="C#v3.5"#> 作为我的指令,它工作得很好。此外,如果我不尝试通过代码生成并仅保存 .tt 文件,它与 VBv3.5 指令一起工作得很好。
这是我的 t4 模板。
这是我的 .NET 代码
mysql - MySQL T4 模板错误:找不到元数据文件“MySql.Data”
D:\Web\CityV2\App_Code\ActiveRecord.tt(0,0):错误 CS0006:编译转换:找不到元数据文件“MySql.Data”
首先让我说我正在使用 VWD 2008 Express。
这些是我到目前为止采取的步骤:
- 创建了一个全新的项目
- 添加了对 Subsonic.Core.dll 和 MySql.Data.dll 的引用
- 将 Active Record 模板复制到项目
- 将所有 <#@ include file="SQLServer.ttinclude" #> 更改为 <#@ include file="MySQL.ttinclude" #>
- 从 TemplateProviders 文件夹复制 MySQL.ttinclude 和 Settings.ttinclude
- 使用我的连接字符串和数据库信息更新了 Settings.ttinclude
- 更新了 Settings.ttinclude 并按照ranomore 的说明创建了外部工具映射
- 尝试从模板构建代码并收到错误
然后我意识到我的开发盒上没有“安装”MySql 连接器(即使我添加了对 bin 的引用)。所以我继续访问 MySQL.com 并下载了最新的 6.0.4 连接器 msi 并安装了它 (GAC)。该错误不再出现,但其他任何事情都没有:没有新类,没有新错误,什么都没有[是的,我在运行命令后刷新了项目;-)]。
两件事情:
- 我在某处错过了一步吗?
- 有没有一种不需要将 MySQL 安装到 GAC 的方法来构建模板?
c# - T4 代码生成:当前项目中的访问类型
使用 T4 代码生成,是否可以访问当前项目中定义的类型?
例如,如果我有一个接口并且我想将它的实现委托给另一个类,即
我想SomeClass
通过代码生成自动化呼叫转移;这可能吗?
intellij-idea - 与 IntelliJ IDEA 中的 Visual Studio T4 类似的东西?
我正在寻找可以读取外部数据(例如 XML)然后生成源代码文件的东西。主要原因是有一个定义文件,然后让 Visual Studio 生成 C# 代码和 IntelliJ 生成 java 代码。
Visual Studio T4 是用于生成源代码的模板引擎。
.net - 您可以从 .NET 应用程序内部处理 T4 模板吗?
您可以从 .NET 应用程序内部处理 T4 模板吗?该代码是否可以调用?包含在项目中?许可?
更新:所以看起来你必须以某种方式使用 VS。
.net - SubSonic 3 和多个 PK 列
我在使用 SubSonic 3 和多个主键列时遇到问题。ActiveRecord T4 脚本似乎不支持它。
在 Settings.ttinclude 的第 173 行
它尝试获取单个主键列并失败。
有什么解决办法吗?
visual-studio - Visual Studio 2008 中缺少 T4 代码生成?
因此,我决定卷起袖子尝试 VS2008 中内置的 T4 代码生成。
我打算完成这篇文章: http ://www.olegsych.com/2008/09/t4-tutorial-creatating-your-first-code-generator/
所以,我到了这一部分:“在主菜单中单击项目->添加新项目,然后在对话框中选择代码生成->文件模板。” 并发现我的机器上缺少代码生成类别。(在 VB 和 C# 项目中都试过)。
是否有单独的下载来在您的机器上安装 T4?
更新#1
所以,我从 CodePlex 下载了 T4 工具箱: http ://t4toolbox.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27563
现在事情似乎已经解决了。我的印象是 VS2005 需要下载,但 VS2008 不需要。哦,好吧,无论如何,它看起来像是一个新版本,所以可能值得下载。
更新#2
现在看来我没有文章中显示的所有模板类型。我只有File,Template,Generator,Unit Test“Generator”文中没有列出,文中还有3个我没有。奇怪的....
subsonic - SubSonic 3.0.0.2 结构.tt
我得到的错误似乎来自 Structs.tt 文件。我正在使用 Northwind 数据库并且仅使用 Products 表(我排除了所有其他表)。我返回 Json(Product.All())。
这是错误:
序列化“SubSonic.Schema.DatabaseColumn”类型的对象时检测到循环引用。这是堆栈跟踪:
用户代码未处理 System.InvalidOperationException 消息="在序列化“SubSonic.Schema.DatabaseColumn”类型的对象时检测到循环引用。" Source="System.Web.Extensions" StackTrace:位于 System.Web.Script.Serialization.JavaScriptSerializer 的 System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)。 System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) 在 System.Web 的 SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)。脚本。
visual-studio-2008 - 安装 Subsonic - 添加文本模板无济于事
我正在尝试开始使用 Subsonic (v3)。简短的安装说明表明我必须:
- 添加对 DLL 的引用 = 完成
- 编辑 Setting.ttinclude 以使用正确的连接字符串 = 完成;将 appsettings 添加到 web.config
- 将模板添加到项目 = 完成,但没有生成任何内容;没有错误也没有代码。
该演示表明,当您添加文件时,会创建适当的 .vb/.cs 类,或者会产生一些错误 - 但我什么也没得到,只是一个包含模板的文件夹。
当谈到 T4 模板时,我是一个完全的新手——事实上,直到现在我才知道它们存在(!)。
有什么想法吗?这必须是基本的东西;这应该很简单。
仅供参考:我正在使用 VS Professional 2008 - 我知道 VS Express 可能存在类似问题。