5

複数のアプリケーションで使用される小さなライブラリを開発しています。自分のライブラリ (log4Net、Entity Framework など) 内でいくつかのサードパーティ ライブラリを使用したいと考えています。自分のライブラリと一緒に DLL を展開するか、ILMerge を使用して 1 つの DLL を作成できると思います (ILMerge については、試したことがないのでほとんど知りません)。

私のライブラリを使用するアプリケーションが、私が使用するのと同じサードパーティのライブラリも使用するとどうなるか心配です。たとえば、log4Net バージョン 1.2 を使用していて、使用するアプリが log4Net バージョン 1.0 を使用している場合、何らかの競合が発生しますか?それともアセンブリの 1 つのバージョンのみが読み込まれませんか?

ILMerge はこれを防ぎますか? サードパーティの依存関係を持つライブラリを開発するとき、これは通常どのように解決されますか?

4

2 に答える 2

3

extern エイリアスを使用できます:

同じ完全修飾型名を持つ 2 つのバージョンのアセンブリを参照しなければならない場合があります。たとえば、同じアプリケーションで 2 つ以上のバージョンのアセンブリを使用する必要がある場合があります。外部アセンブリ エイリアスを使用することで、各アセンブリの名前空間を、エイリアスによって名前が付けられたルート レベルの名前空間内にラップできます。これにより、それらを同じファイルで使用できるようになります。

これがExtern エイリアスのウォークスルーです。

于 2013-06-07T22:41:12.377 に答える
0

最良の方法は、アプリと一緒にデプロイすることです。NuGet は、この種の依存関係を非常にうまく管理します。ILMerge を使用する特定の理由がない限り、たとえば、アップグレードしたい場合など、作業が難しくなるだけです。

于 2013-06-07T22:16:43.233 に答える