Tag: t4

如何编写T4模板以从Entityframework 6创建DTO?

我有一个大型数据库,我在Entityframework中使用数据库优先模型。 它位于Internet服务器上并通过WCF进行通信。 域模型使用所有小写字母作为实体,存储过程和列/属性的名称。 在我的客户端应用程序中,我希望使用标准PascalCase作为命名约定。 T4模板是否可以使用正确的命名约定从Entityframework创建数据传输对象? 如果是这样,有人可以给我一个关于如何写它的起点吗? 为了清楚起见,我不想更改Entityframework生成的任何代码,而是使用Entityframework模型作为对另一个文件的输入添加具有相应CamelCase命名的简单POCO类,然后可以由WCF服务引用也许是Automapper(或类似的东西)。 谢谢你的任何建议。 数据库:PostgreSQL 9.5 数据库接口:Npgsql 3.0.5 .NET 4.5 Entityframework 6.0

对于T4模板,这是Azure Queue构造的一个好/可取的模式吗?

我正在构建一个T4模板,它将帮助人们以一致和简单的方式构建Azure队列。 我想让这个自我记录,并且有些一致。 首先我将队列名称放在文件的顶部,队列名称必须是小写的,所以我添加了ToLower() 公共构造函数使用内置的StorageClient API来访问连接字符串。 我已经看到了许多不同的方法,并希望得到几乎适用于所有情况的东西。 (想法?分享) 我不喜欢不需要的HTTP请求来检查队列是否已经创建,所以我做的是一个static bool 。 我没有实现Lock(monitorObject),因为我认为不需要。 而不是使用字符串并使用逗号解析(如大多数MSDN文档)我将对象传递到队列时序列化。 为了进一步优化,我使用JSON序列化器扩展方法来充分利用8k限制。 不确定编码是否有助于优化此function 添加了重试逻辑来处理队列中出现的某些情况(请参阅html链接) 问: “DataContext”是否适用于此类? 问:以我的方式命名队列行动名称是一种不好的做法吗? 您认为我应该做出哪些其他更改? public class AgentQueueDataContext { // Queue names must always be in lowercase // Is named like a const, but isn’t one because .ToLower won’t compile… static string AGENT_QUEUE_ACTION_NAME = “AgentQueueActions”.ToLower(); static bool QueuesWereCreated { get; set; […]

T4预处理模板调试不起作用 – Visual Studio 2010 RTM

我正在尝试调试预处理的T4模板,我无法进入通过运行预处理模板创建的类。 我能够创建一个类的实例,但是一旦我尝试在调试时进入,就会弹出一个新窗口 没有可用的来源。 当前位置没有可用的源代码。 我的理解是预处理模板可以像普通的c#类一样调试,这不正确吗? 为了能够进入由预处理模板定义的类,您需要做些什么吗? 这是一个非常简单的模板和我遇到问题的调用代码: TestPreprocessedTemplate.tt: Hello 测试代码: var template = new TestPreprocessedTemplate(); string test = template.TransformText(); 编辑 – 根据下面的建议添加了debug =“true”语句,仍然有同样的问题。 更新 – 我也在MSDN论坛上发布了这个问题,并收到了MS员工的回复,表明我上面描述的内容应该确实有效。 还有其他人遇到过这个问题吗? 更新 – 在MSDN论坛的帮助下,看起来问题在于将#line指令添加到生成的c#类中。 评论它们允许我按预期逐步执行代码。 有没有办法阻止将这些指令添加到生成的类中? 使用ASP.NET页面,您可以添加LinePragmas =“false”参数,但这似乎对T4模板没有任何影响。 有任何想法吗?

在构建服务器上运行TextTransform.exe(T4)

我正在尝试设置一个进程,我的T4模板将在构建服务器上进行转换(Visual Studio未安装在那里)。 我已阅读所有在线参考资料,但无法获得显示如何执行此操作的明确来源。 具体来说,这是我遇到的两个问题: TextTransform.exe抛出有关缺少DLL的错误: C:\ TeamCity \ buildAgent \ work \ AppSettings.tt(0,0):错误CS0006:编译转换:元数据文件’Microsoft.VisualStudio.TextTemplating.Interfaces.10.0,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a ‘无法找到 使用gacutil注册DLL文件修复了这个问题,虽然我想避免这一步。 在Visual Studio外部运行时,使用Host.ResolvePath(string)方法不返回任何值。 此方法有助于确定模板用作其数据源的.txt文件的完整路径。 没有它,在构建服务器上找不到此文件。 任何帮助将在运行中受到赞赏。 编辑:打开MS CONNECT问题: https : //connect.microsoft.com/VisualStudio/feedback/details/744137/texttransform-exe-does-not-work-without-vs2010-installed 参考资料我检查过: 获取Visual Studio以在每个构建上运行T4模板 没有Visual Studio的T4? http://msdn.microsoft.com/en-us/library/ee847423.aspx#buildserver

T4模板不会随构建转换

我在Windows 7上使用VisualStudio Ultimate 2012(Update 1)。我可以通过以下方式获取我的T4模板生成文件: 右键单击[tt file] | 运行自定义工具 。 这很棒! (对我而言)。 如果我运行菜单命令,它也可以工作: Build | 转换所有T4模板 。 但我想要自动化! 当我尝试使用每个构建生成生成的代码文件时遇到问题 – 这是我的目标。 我看了一下: Visual Studio中的T4转换和构建顺序 这不是我想要的。 它讨论了使用预构建构建事件。 我希望它成为构建的一部分。 并且: 有没有办法让Visual Studio在成功构建时运行“转换所有模板”? 这不是我想要的。 它讨论了使用后构建事件。 然后我发现了这个: 了解T4:MSBuild集成 来自Oleg Sych的博客 : 完善! 这就是我要的。 虽然他的博客讨论了VS2010,但我已将其应用于VS2012(如适用)。 为了实现这一点,我完成了他的每个步骤。 我安装了Visual Studio SDK 2012和Visual Studio Visualization and Modeling SDK(2012) 我开始使用有形T4插件,但认为有问题,我使用了Oleg的T4工具箱测试版。 可悲的是,我似乎得到了相同的结果:构建错误。 我按照他在网站上的指示重新阅读了所有步骤和部分。 我已经研究了几天,现在是我的第一篇文章。 我被卡住了。 […]

如何通过t4生成自定义类?

我试图通过T4生成以下代码。 using System; using MyDAL; namspace Test { // Select… public partial class MyCustomer { public int id { get ;set;} public string name { get ;set;} public string surname { get ;set;} public MyCustomer() { } public List GetById(int id) { // do something… } } // Delete,Update,Save public partial class MyCustomer { public […]

如何使用有形编辑器从单个T4模板创建多个输出文件?

我试着按照这个教程: http : //t4-editor.tangible-engineering.com/blog/how-to-generate-multiple-output-files-from-a-single-t4-template.html 与visual studio 2015(.Net 4.5) 错误示例项目: http : //www.filedropper.com/t4fail 我使用以下源创建了Template1.tt: 我从模板库中添加了TemplateFileManagerV2.1.ttinclude到我的项目。 然后我收到一个错误: ‘Microsoft.VisualStudio.TextTemplating.IDebugTextTemplatingEngine’在未引用的程序集中定义。 您必须添加对程序集“Microsoft.VisualStudio.TextTemplating.Interfaces.11.0,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”的引用。 所以我添加了引用 C:\ WINDOWS \ Microsoft.NET \assembly\ GAC_MSIL \ Microsoft.VisualStudio.TextTemplating.11.0 \ v4.0_11.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.TextTemplating.11.0.dll 和 C:\ WINDOWS \ Microsoft.NET \assembly\ GAC_MSIL \ Microsoft.VisualStudio.TextTemplating.Interfaces.11.0 \ v4.0_11.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll 我的项目,但没有任何改变。 错误在.ttinclude中的以下方法中 public string GetTemplateContent(string templateName, […]

是否有可用于从xsd生成c#类的T4模板?

是否有可用于从xsd生成c#类的T4模板?

动态更改动态数据项目中的数据注释

我遇到了一个在动态数据Web应用程序中自定义DataAnnotations的场景。 这是场景: [Display(Name=”DispName”)] public string DName{get;set;} 我没有为Display DataAnnotation硬编码Name =“DispName”,而是想从DataBase中获取一些值并使其适合于Name属性。 喜欢: [Display(Name=SomeValueFromDB)] public string DName{get;set;} 有没有办法从数据库中显示Display DataAnnotation的Name属性而不是硬编码它的值? 另外,如何根据表值更改ScaffoldColumn(True / false) ? 我可以使用T4模板吗? 提前致谢。

如何在T4模板中提供连接字符串?

我编写了一个T4模板,我在其中实例化一个EF上下文来读取一些数据。 问题是上下文无法从Web.config中看到连接字符串。 如何使Web.config中的连接字符串可用于模板? 更多信息: 模板是从头开始编写的 EF edmx位于另一个项目中 我在模板中创建的第一个查询告诉我它无法在模板所在的项目中找到所需的连接字符串 尝试了下面的一些解决方案(谢谢),但我明白了: Error 2 Compiling transformation: ‘Microsoft.VisualStudio.TextTemplating12165CB53B43A726CBA54A29800255D257AAFD4D5F0DACE4DFE5872F2DEC7739EDF358F49C0444A912B851939903A79BC6180FCEB3FD0D1BF8C0093741DDDACA.GeneratedTextTransformation’ does not contain a definition for ‘Host’ and no extension method ‘Host’ accepting a first argument of type ‘Microsoft.VisualStudio.TextTemplating12165CB53B43A726CBA54A29800255D257AAFD4D5F0DACE4DFE5872F2DEC7739EDF358F49C0444A912B851939903A79BC6180FCEB3FD0D1BF8C0093741DDDACA.GeneratedTextTransformation’ could be found (are you missing a using directive or an assembly reference?) 我声明了以下内容: 如果我包含Microsoft.VisualStudio.TextTemplating的程序集,它会告诉我它已经插入。 另外,有没有办法让ConfigurationManager可用于DbContext,这样他就可以在没有我传递连接字符串的情况下在幕后阅读他想要的内容? 解决了它,再次感谢: var map = new ExeConfigurationFileMap(); […]