【发布时间】:2012-08-29 10:36:56
【问题描述】:
我正在使用 EnvDTE 在我的 T4 模板中生成一些代码。
我的代码在 Visual Studio 2010 中可以正常工作,但是我刚刚开始使用 Visual Studio 2012,现在当我尝试运行我的模板时出现以下错误
Compiling transformation: Metadata file 'EnvDTE.dll' could not be found
我的项目中实际上并没有对 EnvDTE 的引用,因为它是一个 Silverlight 类库,我无法添加 DLL,但它以某种方式找到了 DLL。
我不确定 10 和 12 之间的区别是什么。
以下是我的 ttinclude 文件开头的导入和程序集定义。
<#@ template debug="true" hostSpecific="true" #>
<#@ output extension=".generated.cs" #>
<#@ Assembly Name="EnvDTE.dll" #>
<#@ 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" #>
有什么我需要做的不同才能让它在 Visual Studio 2012 上工作
【问题讨论】:
-
<#@ Assembly Name="EnvDTE.dll" #>另外,您需要使用Fusion log viewer. 进行调试,只需确保以管理员身份运行它,打开日志,然后在尝试调试之前重新启动。您将看到 CLR 在哪里寻找程序集,以及什么版本,并从那里确定为什么找不到它(如果您甚至安装了它)。 -
使用 Fusion 登录时,EnvDTE 没有任何显示,我肯定在 2010 年和 2008 年安装了 EnvDTE,2012 年没有新版本
-
什么都没有?这似乎很奇怪。对于 S&G,请尝试
<#@ Assembly Name="C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\PublicAssemblies\envdte.dll" #>(假设您可以在那里找到 EnvDTE) -
谢谢威尔,给它完整的路径。老实说,我不太清楚为什么我没有首先想到这一点。
标签: t4 visual-studio-2012 envdte