Tag: t4

使用与模板位于同一项目中的T4模板中的类型

我正在研究我的第一个T4代码生成工具,为我的项目添加一些存储过程帮助程序代码。 我已经创建了自定义类型(例如StoredProcedure和StoredProcedureParameter来帮助我生成代码,并在我的代码中包含了程序集和命名空间引用: 这允许我在我的T4模板代码中使用我的自定义类型。 但是,因为我的自定义类型与T4模板代码存在于同一个项目中,所以在运行模板代码而不重新启动Visual Studio时,我无法重新编译项目。 这不是很有趣。 我读了一篇很棒的文章 ,通过使用T4工具箱解决了这个问题,但是它没有用。 我正在实现VolatileAssembly指令错误或者T4工具箱根本没有安装。 我不确定工具箱是否正确安装(我在Win XP上使用VS 2010)。 有什么方法可以解决这个问题?

如何将字符串参数传递给t4模板

嗨,我想找到一种方法将普通字符串作为参数传递给文本模板。 这是我的模板代码,如果有人能告诉我在c#中需要写什么来传递我的参数并创建类文件。 那将是非常有帮助的,谢谢。 namespace { using System; using System.Collections.Generic; using System.Linq; using System.Xml; /// /// This class describes the data layer related to . /// /// /// <change author=`Auto Generated` date=>Original Version /// public partial class : DataObject { #region constructor /// /// A constructor which allows the base constructor to attempt to extract the […]

使用T4 / EnvDTE获取使用特定属性修饰的所有方法

我想获得我的项目中使用T4 / EnvDTE使用MyAttribute修饰的所有公共方法的列表。 我知道这可以通过reflection完成,但我不想加载程序集并在T4模板中反映它,而是我想使用现有的代码文件作为源代码。 以下是我在互联网上找到的样板代码,它获取对当前项目的引用

从T4模板调用同一项目中的类

我正在尝试为CRUD类创建一些脚手架,并希望使用T4来帮助构建这些类。 我刚刚开始并且在调用一个住在同一个项目中的类时遇到了问题。 例如: using System; using System.Data; using System.Data.Linq; using System.Collections.Generic; namespace TTFileGenerator { public class { <# MyClass myClass = new MyClass(); List something = myClass.GetSomething() … #> } } 错误: 编译转换:找不到类型或命名空间名称’MyClass’(您是否缺少using指令或程序集引用?) 它是同一个项目中的公共类。 我可以从项目中的其他类访问它而不是T4文件。 还是一个T4新手。 任何方向将不胜感激。

NHibernate的T4模板? – 不流利的NHibernate

想知道是否有人知道用于生成C#POCO类的一组T4模板,以及从数据库中的一组表映射NHibernate的XML文件。 我看到David Hayden创建了T4,用于生成基于DBML模型的FluentNH代码,但我还没有准备好使用FluentNH,因为还没有正式版本(尽管我喜欢这个想法)。 任何人都知道使用普通NHibernate的任何T4模板?

MSBuild支持Visual Studio 2017 RTM中的T4模板

在Visual Studio 2015中,我使用NuGet包Unofficial.Microsoft.VisualStudio.TextTemplating.14.0.0 ,它允许我在构建项目时直接从MSBuild转换T4模板。 但是,在Visual Studio 2017 RTM中,这会使用以下消息中断构建: An Exception was thrown while running the transformation code. The process cannot continue. The following Exception was thrown: System.IO.FileNotFoundException: Could not load file or assembly ‘Microsoft.CodeAnalysis, Version=1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified. File name: ‘Microsoft.CodeAnalysis, Version=1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ […]

在C#T4模板中通过DTE访问项目

我目前正在尝试迭代我的所有项目(sharepoint)以将所有functionguid放入文件中。 我想在它们前面加上项目名称。 我的问题是DTE.Solution.Item和DTE.Solution.Projects.Item(或foreach的枚举器)不会将整数作为参数,foreach返回一个不能转换为Project的对象。 这是我的代码片段: var hostServiceProvider = (IServiceProvider) Host; var dte = (DTE) hostServiceProvider.GetService(typeof(DTE)); var projectCount = dte.Solution.Projects.Count; var projects = new Dictionary(); foreach(Project dteProject in dte.Solution) { var dteProject = dte.Solution.Item(i); projects.Add(dteProject.Name, dteProject.FullName); } 好的 – 代码没问题 – 调试器不是! 抛出调试上下文的我的exception,但如果没有附加调试器,模板将运行正常。

T4模板错误:加载包含文件ef.utility.cs.ttinclude返回null或空字符串

我已经覆盖了控制器生成T4模板( ControllerWithContext.tt ),如此处所述。 我想利用在POCO模型生成器T4模板中使用的EF.utility.CS.ttinclude中的代码帮助程序实用程序。 因此,我Model.tt从我的Model.tt复制到我的ControllerWithContext.tt 。 但是,当我尝试添加控制器时,我收到错误消息 加载包含文件’EF.utility.CS.ttinclude’返回null或空字符串 根据MSDN文档 ,这个错误是因为包含的文件是空白的,显然不是因为它适用于Model.tt 我能看到的唯一区别是被覆盖的ControllerWithContext.tt没有定义自定义工具,而Model.tt将它设置为TextTemplatingFileGenerator 。 我的解决方法是将我需要的函数从ef.utility.cs.ttinclude到我的ControllerWithContext.tt ,它本身会抛出更多错误,但很容易解决。 如何在未定义自定义工具的情况下包含T4模板?

在T4模板中获取引用项目的路径?

我有一个解决方案,其中包含一些项目。 我想在我的一个测试项目中创建一些T4模板,以根据另一个项目中的代码生成测试。 测试项目有一个项目参考另一个项目。 我遇到的问题是我不知道如何获取我需要生成代码的edmx文件的文件路径。 示例(假装这是一个基于ASCII的解决方案资源管理器): MySolution.sln -> MyTests.csproj (C:\a\b\c\) —-> GeneratedTests.tt (C:\a\b\c\GeneratedTests.tt) -> MyDAL.csproj (C:\x\y\z\) —-> MyModel.edmx (C:\x\y\z\MyModel.edmx) 我的GeneratedTests.tt如何能够利用其项目引用获取MyModel.edmx的文件路径?

在运行时创建T4模板(构建时)?

我们正在构建一个内部应用程序,需要生成HTML文件以上传到eBay列表中。 我们希望使用模板引擎根据我们预定义的数据库和静态字段生成HTML文件。 模板还需要具有逻辑function(if-then,foreach等)。 我们已经看过T4并且它看起来很完美,但我们没有看到它是否具有在运行时使用的function,因此用户可以创建T4模板,然后应用程序可以“编译”它并生成最终的HTML文件。 这有可能,怎么样? 如果没有,是否还有其他我们应该关注的具有所有这些function的框架?