1 つの解決策 (または回避策) は、ソフトウェアを実行する必要があるコンピューターのグローバル アセンブリ キャッシュ(GAC) に両方のバージョンをインストールし、厳密な名前を使用してアセンブリを参照することです。これは、アセンブリが実際に厳密な名前を持っていることを前提としています。
少数の開発者がいる場合、またはソリューションを多数のコンピューターに展開する予定がある場合 (エンドユーザー アプリケーションなど)、GAC へのインストールは面倒です。この場合、唯一の選択肢は、2 つのバージョンのいずれかをそのバージョンを必要とするアセンブリにマージすることだと思います (間違っているかもしれません) 。Castle.DynamicProxy2.dll
特定のケースでは、 v2.1 を にマージする必要がありますNHibernate.dll
。
ILMergeというツールを使用して、アセンブリをマージできます。実行する必要があるコマンドは次のようになります (未テスト):
ILMerge /t:library /internalize /out:Deploy/NHibernate.dll
NHibernate.dll Castle.DynamicProxy2.dll
この/internalize
スイッチは、出力アセンブリの 2 番目のアセンブリ (この場合は Castle) のすべての型をマークするように ILMerge に指示しinternal
ます。NHibernate.dll
これがないと、v2.2 の新しいバージョンとシェルフ バージョンの両方を参照するプロジェクトをコンパイルしようとするCastle.DynamicProxy2.dll
と、まったく同じ名前のクラスが含まれるため、コンパイル エラーが発生する可能性があります。