T4 Include.cs正在寻找ITextTemplateEngineHost
本文关键字:寻找 ITextTemplateEngineHost Include cs T4 | 更新日期: 2023-09-27 17:59:06
我的数据访问项目是C#。净额4.5。我添加了一个包含文件,基于这篇文章:http://erraticdev.blogspot.com/2011/01/generate-enum-of-database-lookup-table.html
我的文件(EnumTypes.ttinclude)如下所示:
<#@ template debug="true" hostSpecific="true" #>
<#@ output extension=".generated.cs" #>
<#@ Assembly Name="EnvDTE" #>
<#@ Assembly Name="System.Data" #>
<#@ import namespace="EnvDTE" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#
string tableName = Path.GetFileNameWithoutExtension(Host.TemplateFile);
string path = Path.GetDirectoryName(Host.TemplateFile);
string columnId = tableName + "ID";
string columnName = tableName + "Name";
string columnDescription = "Description";
string connectionString = "Data Source=192.168.1.16;Initial Catalog=Mkp;Persist Security Info=True;User ID=sa;Password=1g1gl0b@l; MultipleActiveResultSets=true;Min Pool Size=20; Max Pool Size=200;Pooling=true;Connection Timeout=30";
// Get containing project
IServiceProvider serviceProvider = (IServiceProvider)Host;
DTE dte = (DTE)serviceProvider.GetService(typeof(DTE));
Project project = dte.Solution.FindProjectItem(Host.TemplateFile).ContainingProject;
#>
using System;
using System.CodeDom.Compiler;
...
我的IdentifierType.tt文件应该使用,看起来像这样:
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ include file=".'EnumTypes.ttinclude" #>
生成的EnumTypes.cs文件具有以下行:
private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue;
public virtual global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost Host
{
//...
}
但是,IDE找不到ITextTemplateingEngineHost。当我尝试添加对"Microsoft"的引用时。VisualStudio。TextTemplateing。接口"我在我的机器上找不到它。有我需要的NuGet包吗?
我正在努力阅读T4,这样我就能了解发生了什么,但任何帮助都会很棒。
编辑:我可以通过浏览到"C:''Windows''Microsoft"来修复ITextTemplateEngineHost的.cs错误。NET''程序集''GAC_MSIL''Microsoft。VisualStudio。TextTemplateing。在我的计算机上,Interfaces.10.0''v4.0_10.0.0.0__b03f5f7f11d50a3a''MicrosoftMicrosoft.VisualStudio.TextTemplateing.Interfaces.100.dll'''。
我现在得到错误:"主机名称在当前上下文中不存在"
回答:我用错了自定义工具。我需要将文件属性上的自定义工具设置为"TextTemplateingFileGenerator"。
我使用了错误的自定义工具。我需要将tt文件的文件属性上的自定义工具设置为"TextTemplateingFileGenerator"。
我还删除了.tinclude文件上的自定义工具设置。