我在Windows7上使用VisualStudioUltimate2012(更新1)。我可以通过以下方式让我的T4模板生成文件:右键单击[tt文件]|运行自定义工具。效果很好!(对我来说是的)。如果我运行菜单命令,它也可以工作:Build|转换所有T4模板。但我想要自动化!当我尝试让生成的代码文件在每次构建时生成时遇到问题——这是我的目标。我看着这个:T4transformationandbuildorderinVisualStudio这不是我想要的。它讨论了使用预构建构建事件。我希望它成为构建的一部分。还有这个:IsthereawaytogetVisualStudiotorun“Tr
我有一个包含几个项目的解决方案。我想在我的一个测试项目中创建一些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)我的Ge
我有一个包含文本模板的C#项目。我希望此模板根据项目中的C#类的反射(reflect)生成一些SQL。如何使用T4访问当前项目的内容?是否有可能,如果可以,反射是否可用,或者它是否只能访问随后必须解析的原始源?提前致谢! 最佳答案 Howdoesoneaccessthecurrentproject'scontentsusingT4?一种方法是使用EnvDTECOM组件。谷歌搜索T4和EnvDTE应该会带回大量示例。Isitpossible,andifso,isReflectionavailable,orisitaccesstojus
我有一个案例,我需要生成两个CSharp代码文件,它们具有完全相同的代码,但方法的输入和输出类型的命名空间不同。事实上,每个文件都是针对特定国家/地区的,类型来自特定国家/地区的WSDL。我正在围绕服务编写一些包装器,逻辑完全相同,但从WSDL自动生成的类型不同。我怎样才能减少编码工作并在一个地方编写逻辑并为两组不同的类型生成它? 最佳答案 或者您可以使用T4Toolbox(OldCodePlexproject,NewGitHubproject)并使用助手生成多个文件。作者OlegSych拥有adocumentaryblogpost
当我编辑T4时,每次切换到另一个文件时都会执行脚本。快速简单的脚本还可以,但有些脚本需要很长时间才能执行。有没有办法禁用此行为?我希望脚本仅在我保存T4文件或从菜单中手动选择“运行自定义工具”时运行。 最佳答案 我遇到了完全相同的问题。我按照本文中的步骤操作http://msdn.microsoft.com/en-us/library/ee789839.aspx关于将模板拆分到另一个项目并共享输出文件。它详细说明了如何通过右键单击模板并清除CustomTool属性来关闭附加到模板的TextTemplatingFileGenerato
您好,我正在尝试找到一种将普通字符串作为参数传递给文本模板的方法。这是我的模板代码,如果有人能告诉我我需要用C#编写什么来传递我的参数并创建类文件。这将非常有帮助,谢谢。namespace{usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Xml;//////Thisclassdescribesthedatalayerrelatedto./////////>OriginalVersion///publicpartialclass:DataObject{#regionconstructor//
我有一个VS项目,其中包含:在template.tt上运行TextTransform的预构建操作以生成generated.csgenerated.cs列为要编译的文件之一(即在项目文件列表中)我在构建项目时,执行了预构建Action,重新创建了generated.cs,但是VS编译的是之前版本的generated.cs(我猜它是在构建过程开始时加载到内存中的)。如何使构建使用新版本的generated.cs(即在预构建操作中生成的)?如何强制构建顺序?请注意,文本转换输入是动态的,因此无法在设计时完成。 最佳答案 我认为您不需要自定
我正在编写生成C#代码的软件。我主要使用StringTemplate和StringBuilder。有什么方法可以直接从我的代码中使用T4模板吗? 最佳答案 OlegSych在此处描述如何执行此操作:UnderstandingT4:PreprocessedTextTemplates.请注意,您似乎需要VisualStudio2010来生成预处理的文本模板,但您可以在任何您喜欢的地方托管预处理的文本模板-包括在您的WinForms应用程序中。 关于c#-我可以从C#以编程方式使用T4吗?,我
在VisualStudio2015中,我使用的是NuGet包Unofficial.Microsoft.VisualStudio.TextTemplating.14.0.0,它允许我在构建项目时直接从MSBuild转换T4模板。然而,在VisualStudio2017RTM中,这会破坏构建并显示以下消息:运行转换代码时抛出异常。该过程无法继续。抛出以下异常:System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.CodeAnalysis,Version=1.3.1.0,Culture=neutral,PublicKeyToken=31bf
我有生成cs文件的T4模板(mycode.tt)。我通常右键单击tt文件并选择RunCustomTool,它在内部获取一个xml文件并为我生成代码。现在我想使用c#windows应用程序运行自定义工具。所以点击一个按钮我想运行自定义工具。是否可以从C#运行CustomTool。编辑:我有2个tt文件,其中一个没有代码隐藏cs文件。但是另一个附加了一个.cs文件,我正在从第一个.tt文件调用第二个文件的TransformText()方法。所以我需要调用第一个文件。所以我不能使用TransformText()方法。有没有办法动态调用textTemplate文件?