1

いくつかの共有コンポーネントに依存するアプリケーションがいくつかあります。これらの共有アセンブリをアプリケーションのローカル ディレクトリの外にある共有ディレクトリに移動しています。私の目標は、共有アセンブリの新しいバージョンがリリースされるたびに、共有ディレクトリ内に新しいバージョンを配置するだけでよく、アプリケーションで何も変更する必要がないことです。assemblyResolve イベントはこれに対する良い解決策だと思います。ハンドラーの動作方法について具体的な質問があります。

このハンドラーをアタッチして、共有ディレクトリから欠落しているアセンブリを解決するとします。アセンブリ名だけを使用してディレクトリ内の対応する dll を検索し、Assembly.LoadFrom(dllpath) を使用してロードします。

私のアプリケーションはアセンブリを参照しています: name:A,version:1.0,publickey:... アセンブリは version:2.0 にアップグレードされます 新しいアセンブリを共有ディレクトリに配置します。

アプリケーションは新しいバージョンを適切に取得しますか? 新しいアセンブリが読み込まれ、ハンドラーから返された後、C# は一致を行いますか?

私のテストから、それはうまくいきます。.NET は、ハンドラーから返されたアセンブリを登録するときにバージョンを無視します。私が間違っていないこと、および警告がないことを確認したいだけです

ありがとう

4

1 に答える 1

2

MSDNの記事で明示的に言及されています:

イベント ハンドラーは、要求されたバージョンとは異なるバージョンのアセンブリを返すことができます。

于 2012-11-08T20:23:05.220 に答える