この問題は、stackoverflowとWeb全体で回答されるようですが、私の問題は異なります。私は次のセットアップを持っているとき、GAC(上司がいないと言う)を使用しない方法を理解しようとしています外部アセンブリの使用:配置されたアセンブリのマニフェスト定義がアセンブリ参照と一致しません
:
プロジェクトは、NHibernateはを使用し、サードパーティ製のアセンブリですAntlr3.Stringtemplate どちらも。 NHibernateの他が利用できない場合Antlr3.Runtimeバージョン3.3.1.7705
一つへの参照がエラーであろうAntlr3.Runtimeバージョン3.1.3.42154 Antlr3.Stringtemplateへの参照を持っています。
私はバインディングリダイレクトを試みましたが、バージョン間でpublicKeyTokenが異なるため、これは機能しません。 3.1.3.42154のバージョンと一致する公開鍵トークンを持つ3.3.17705を探します。
GACに1つまたは両方をインストールしてください。しかし、上司はGACに何もインストールさせません。
バージョン3.1.3.42154のフォルダを持つLibプロジェクトを含めることで、両方のDLLをBINディレクトリに入れてみました。 私は常にコピーするように言ったので、/bin/Lib/3.1.3.42154/Antlr.Runtime.dll を取得しました。次に、そのディレクトリを調べるためのプローブ要素を追加しました。 これはうまくいかず、同じエラーが発生しました。
他のサードパーティ製のアセンブリを参照するサードパーティのアセンブリを使用するにはどうすればよいですか?
UPDATE:しかし、言ってもまだエラーがthta 3.1.3を見つけることができない
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()、バージョンはアプリケーションドメインにロードされていることを示しています。
以下は、そのコードを呼び出す直前にAppDomain.CurrentDomain.GetAssemblies()から読み込まれたものです。最初の2行はGetAssemblies()のwhatsで、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
PublicKeyTokenの不一致がそれを殺します。最新のリファレンスを使用するこれらのDLLを再構築することは、残っているすべてのものです。 –
ええ、NHibernateのソースをダウンロードして、それを再コンパイルしてstringtemplateが使用するDLLを参照しようとしていました – BradLaney