EnvDTE アセンブリを VSLangProj アセンブリと共に使用した際に発生するエラー
EnvDTE アセンブリおよび 1 つ以上の VSLangProj アセンブリを参照するプロジェクトを作成した場合に、次の実行時エラーが発生することがあります。
"ハンドルされていない例外: 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 をビルドしている場合のみ発生します。