Ошибка при использовании EnvDTE со сборками VSLangProj
Обновлен: Ноябрь 2007
Если создать проект, ссылающийся на одну или несколько сборок VSLangProj и сборку EnvDTE, при запуске может возникнуть следующая ошибка:
"Unhandled Exception: System.IO.FileNotFoundException: Error while loading file 'EnvDTE, Version=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 файлов CONFIG не существует.
См. также
Задачи
Практическое руководство. Добавление ссылок на пространства имен EnvDTE, EnvDTE80 и EnvDTE90