将 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 中不具有配置文件。

请参见

任务

如何:添加对自动化命名空间的引用

其他资源

引用自动化程序集和 DTE2 对象