草庐IT

tangible-t4-editor

全部标签

c# - 使用 T4 和 C# 在运行时编译动态代码

我在T4上阅读的使用TextTemplatingFilePreprocessor的文章展示了如何动态生成成为项目一部分并与项目一起编译的代码。是否可以使用T4生成在运行时编译、输出到dll、加载和执行的代码,并且所述代码可以访问与dll关联的常见可见性功能?如果是这样,请给我举个例子。我正在有效地尝试做与使用IL生成动态dll相同的事情,而不是使用C#。编辑我需要这个的具体情况很简单。我正在编写一个将消息路由到服务的消息路由器。服务可以是本地的或远程的。声明性脚本被编译成C#。动态部分是“这个服务是本地的还是远程的?”。输出C#相应更改。本地/远程的路由风格不同,因此具有动态特性。这是

c# - 通过 T4 代码生成自动 INotifyPropertyChanged 实现?

我目前正在设置我的一个新项目,并且想知道我如何才能实现我的ViewModel类确实具有INotifyPropertyChanged支持,而不必自己手动编写所有属性。我研究了AOP框架,但我认为它们只会用另一个依赖项破坏我的项目。所以我考虑使用T4生成属性实现。设置是这样的:我有一个ViewModel类,它仅声明其属性背景变量,然后我使用T4从中生成属性实现。例如,这将是我的ViewModel:publicpartialclassViewModel{privatestringp_SomeProperty;}然后T4将遍历源文件并查找名为“p_”的成员声明并生成如下文件:publicpar

c# - 如何在 Visual Studio 2015 上的 ASP.NET Core 中创建 T4 文本模板 (.tt)

我想创建T4文本模板来实现代码生成。我在msdn上找到的所有教程都建议按照以下步骤添加新的文本模板:Add>NewItem>TextTemplate,(例如https://msdn.microsoft.com/en-us/library/dd820620.aspx)但我没有看到该选项(Text模板)在那里。我正在使用ASP.NET核心1.0。此问题与VS2015或ASP.NETCore相关吗?如果其中任何一个都不支持T4模板,那么实现此目标的最佳解决方案/替代方案是什么?(我想从C#代码生成typescript代码),类似于本教程http://dotnetspeak.com/2015/

c# - 如何使连接字符串在 T4 模板中可用?

我编写了一个T4模板,我在其中实例化了一个EF上下文以读取一些数据。问题是上下文无法从Web.config中看到连接字符串。如何使来自Web.config的连接字符串可用于模板?更多信息:模板是从头开始编写的EFedmx位于另一个项目中我在模板中进行的第一个查询告诉我它无法在模板所在的项目中找到所需的连接字符串尝试了下面的一些解决方案(谢谢),但我明白了:Error2Compilingtransformation:'Microsoft.VisualStudio.TextTemplating12165CB53B43A726CBA54A29800255D257AAFD4D5F0DACE4D

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

我想获取项目中使用T4/EnvDTE使用MyAttribute修饰的所有公共(public)方法的列表。我知道这可以通过反射来完成,但我不想加载程序集并在T4模板中反射它,相反,我想使用现有的代码文件作为源。以下是我在互联网上找到的引用当前项目的样板代码 最佳答案 我想确认您使用EnvDTE获取有关项目类和方法的设计时信息的计划。在我看来,这比冒险反射(reflect)同一项目的过时程序集更可靠。由于您已经获得了解决方案的当前项目,因此您现在应该使用VisualStudioCodeModel迭代您的类及其方法等。我知道这可能很烦人,

C# POCO T4 模板,生成接口(interface)?

有谁知道任何可以生成接口(interface)和类的POCOT4模板的调整版本?即,如果我在.edmx文件中有Movie和Actor实体,我需要获取以下类和接口(interface)。interfaceIMovie{stringMovieName{get;set;}ICollectionActors{get;set;}//insteadofICollection}classMovie:IMovie{stringMovieName{get;set;}ICollectionActors{get;set;}//insteadofICollection}interfaceIActor{stri

c# - 在 Visual Studio Code 中执行 T4 文本模板

我在VisualStudioCode中创建了一个T4文本模板(.tt)文件,但与VisualStudio2017(或2015,...)不同,它不会在保存后生成输出文件.tt文件。如何在VisualStudioCode中生成输出? 最佳答案 此解决方案并不完全符合您的要求,但它可能在许多情况下都有用(仅限Windows操作系统)。您可以在VisualStudioCode中创建任务并运行C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Enterprise\Common7\IDE\TextT

c# - "There is no editor available for"无法打开.cs

我的电脑在处理一个项目时关机,当我再次打开C#并恢复它时,我收到一条错误消息Thereisnoeditoravailable'forfilename.cs'Makesuretheapplicationforthefiletype(.cs)isinstalled现在我根本无法访问我的代码。我正在使用VisualC#2010Express。我尝试直接打开它,它显示了C#,但.cs文件在记事本中打开。文件大小为30kb,所以它没有被删除。并且在上次运行的调试文件夹中仍然有一个工作的.exe。有什么方法可以恢复代码吗? 最佳答案 尝试在记事

c# - 在 T4 中使用项目引用作为程序集路径

我有一个.tt脚本需要引用几个外部程序集。T4主机是否可以自动包含项目中引用的程序集-而不是我手动为每个程序集添加程序集指令?例如当使用相对于$(ProjectDir)的路径时,从nuget引用程序集是一个移动目标。使用像$(Project)\bin\Debug\Example.dll这样的程序集路径似乎也不是最优的——因为它要求构建之前已经成功——如果您有一个.tt文件在.cs文件中生成“ErrorGeneratingOutput”!?更新1:所以我第二次尝试解决这个问题,但这次试图解决围绕“TransformOnBuild”的问题(作为旁注,我强烈推荐@kzu的优秀项目:https

c# - T4 模板错误 : loading the include file ef. utility.cs.ttinclude 返回了 null 或空字符串

我已经覆盖了Controller生成T4模板(ControllerWithContext.tt),如here所述.我想利用在POCO模型生成器T4模板中使用的EF.utility.CS.ttinclude中的代码帮助实用程序。因此,我将以下行从我的Model.tt复制到我的ControllerWithContext.tt。但是,当我尝试添加Controller时,我收到了错误消息Loadingtheincludefile'EF.utility.CS.ttinclude'returnedanulloremptystring根据MSDNdocumentation,这个错误是因为包含的文件是