Поделиться через


Ошибка при использовании 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

Другие ресурсы

Создание ссылок на сборки автоматизации и объект DTE2