T4 模板中无法识别 EnvDTE 类型

jko*_*ian 5 c# t4 envdte

我正在尝试加快使用 T4 模板的速度。我发现了以下示例(此处):

\n\n
<#@ template hostspecific="True" #>\n<#@ output extension="txt" #>\n<#@ include file="T4Toolbox.tt" #>\n<#@ import namespace="EnvDTE" #>\n<#\n  CodeEnum enumeration = GetEnum("ContactType.cs");\n  WriteLine("Found enumeration " + enumeration.Name);\n  foreach (CodeElement element in enumeration.Children)\n  {\n    CodeVariable value = element as CodeVariable;\n    if (value != null)\n      WriteLine("\xe2\x80\xa6 found value " + value.Name);\n  }\n#>\n<#+\n  private CodeEnum GetEnum(string enumFile)\n  {\n    ProjectItem projectItem = TransformationContext.FindProjectItem(enumFile);\n    FileCodeModel codeModel = projectItem.FileCodeModel;\n    return FindEnum(codeModel.CodeElements);\n  }\n\n  private CodeEnum FindEnum(CodeElements elements)\n  {\n    foreach (CodeElement element in elements)\n    {\n      CodeEnum enumeration = element as CodeEnum;\n      if (enumeration != null)\n        return enumeration;\n      enumeration = FindEnum(element.Children);\n      if (enumeration != null)\n        return enumeration;\n    }\n    return null;\n  }\n#>\n
Run Code Online (Sandbox Code Playgroud)\n\n

不知何故,EnvDTE 命名空间中的任何类型都无法识别。我正在使用 Visual T4 扩展。所有 EnvDTE 类型都带有红色下划线。该模板无法运行,并且我收到如下错误列表:

\n\n
The type or namespace ... could not be found (are you missing a using directive or assembly reference?)\n
Run Code Online (Sandbox Code Playgroud)\n\n

有谁知道如何解决这个问题?

\n

pod*_*ska 2

您是否在项目中添加了对 ENVDTE 和 ENVDTE80(90 等)的引用?