VSLangProj 어셈블리와 함께 EnvDTE를 사용할 때 발생하는 오류
Visual Studio의 추가 기능은 Visual Studio 2013에서 사용되지 않습니다. 추가 기능을 VSPackage 확장으로 업그레이드하는 것이 좋습니다. 업그레이드에 대한 자세한 내용은 FAQ: VSPackage 확장으로 추가 기능 변환 을 참조하십시오.
하나 이상의 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를 빌드하는 경우에만 발생합니다.