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


Ошибка при использовании EnvDTE со сборками VSLangProj

Если создать проект, ссылающийся на одну или несколько сборок VSLangProj и сборку EnvDTE, при запуске может возникнуть следующая ошибка:

"Unhandled Exception: System.IO.FileNotFoundException: Error while loading file 'EnvDTE, Version=7.0.3300.0"

Эта ошибка вызвана конфликтом разрешения типов.Таким образом, версия EnvDTE, включенная в состав Visual Studio 2005, является версией 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 не существует.

См. также

Задачи

Практическое руководство. Добавление ссылок на пространства имен автоматизации

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

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