将 EnvDTE 和 VSLangProj 程序集一起使用时出错
如果创建的项目引用了一个或多个 VSLangProj 程序集和 EnvDTE 程序集,在运行时则可能收到以下错误:
“未经处理的异常:System.IO.FileNotFoundException:加载 EnvDTE 文件时出错,版本=7.0.3300.0”
运行时类型解析冲突导致该错误。 也就是说,Visual Studio 2005 附带的 EnvDTE 版本为 8.0.xx,但是项目的配置引用却需要该程序集的早期版本(7.0.xx 版)。 若要解决此问题,必须将较新版本的 EnvDTE 的绑定重定向添加到项目的 (.config) 配置文件中。 这将使 Visual Studio 能够加载较新版本的 EnvDTE,并防止错误发生。
若要实现这一点,请将“应用程序配置文件”添加到项目中,然后将其内容替换为:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-
com:asm.v1" appliesTo="v2.0.50318">
<dependentAssembly>
<assemblyIdentity name="EnvDTE" publicKeyToken=
"b03f5f7f11d50a3a"/>
<bindingRedirect oldVersion="7.0.3300.0"
newVersion="8.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
这种错误只在生成 EXE 时出现,因为 DLL 中不具有配置文件。