VSLangProj 어셈블리와 함께 EnvDTE를 사용할 때 발생하는 오류

업데이트: 2007년 11월

하나 이상의 VSLangProj 어셈블리와 EnvDTE 어셈블리를 참조하는 프로젝트를 만드는 경우 런타임에 다음과 같은 오류가 발생할 수 있습니다.

"처리되지 않은 예외: System.IO.FileNotFoundException: '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>

DLL에는 구성 파일이 없으므로 이 오류는 EXE를 빌드하는 경우에만 발생합니다.

참고 항목

작업

방법: EnvDTE, EnvDTE80 및 EnvDTE90 네임스페이스에 대한 참조 추가

기타 리소스

자동화 어셈블리 및 DTE2 개체 참조