私はこの質問がstackoverflowとウェブ全体で答えられているように見えることを知っていますが、私の問題は異なります。
次の設定がある場合、GACを使用しない方法(上司は「いいえ」と言います)を理解しようとしています。
プロジェクトはNHibernateとAntlr3.Stringtemplateを使用します。どちらもサードパーティのアセンブリです。NHibernateにはAntlr3.Runtimeバージョン3.1.3.42154への参照がありますAntlr3.StringtemplateにはAntlr3.Runtimeバージョン3.3.1.7705への参照があります
もう一方が利用できない場合、一方はエラーになります。
リダイレクトをバインドしようとしましたが、publicKeyTokenがバージョン間で異なるため、これは機能しません。最終的に、3.1.3.42154バージョンと一致する公開鍵トークンを持つ3.3.17705を探します。
GACに一方または両方をインストールすると機能します。ただし、上司はGACに何もインストールさせません。
また、バージョン3.1.3.42154のフォルダーを持つLibプロジェクトを含めることにより、両方のDLLをBINディレクトリに配置してみました。常にコピーするように指示したので、/ bin / Lib / 3.1.3.42154 / Antlr.Runtime.dllを取得します。次に、そのディレクトリをプローブするためのプローブ要素を追加しました。これは機能せず、まったく同じエラーが発生しました。
別のサードパーティアセンブリを参照するサードパーティアセンブリをどのように使用できますか?どちらも異なるバージョンを参照していますか?
アップデート:
System.Reflection.Assembly.LoadFile(@"Antlr3.Runtime.dll"); // 3.3.1
System.Reflection.Assembly.LoadFile(@"Antlr3.Runtime\Antlr3.Runtime.dll"); // 3.1.3
AppDomain.CurrentDomain.GetAssemblies()は、バージョンがアプリドメインに読み込まれていることを示していますが、3.1.3が見つからないというエラーが表示されます。
以下は、エラーが発生したコードを呼び出す直前にAppDomain.CurrentDomain.GetAssemblies()からロードされたものです。最初の2行はGetAssemblies()の内容であり、3行目はエラーが欠落していることを示しています。
{Antlr3.Runtime, Version=3.3.1.7705, Culture=neutral, PublicKeyToken=eb42632606e9261f}
{Antlr3.Runtime, Version=3.1.3.42154, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7}
Antlr3.Runtime, Version=3.1.3.42154, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7