MSDNのthis articleからの引用は次のとおりです。依存アセンブリのバージョンが参照アセンブリに格納されていますか?
...厳密な署名は、サービスをより複雑にします。 現在のバージョン管理ポリシーの下では、アセンブリは常に構築されたアセンブリの正確なバージョンの を読み込もうとします。たとえば、 アプリケーションがバージョン1.0.0.0の強力な名前の アセンブリに対してビルドされ、バージョン番号 を1.0.0.1にバンプすると、アセンブリ内にバグが修正された場合、既存のアプリケーションは更新された を見つけられませんアセンブリ。今
、(C#またはVB.netで書かれた)は、2つの名前付き厳密なアセンブリ、すなわち、X及びYは、存在すると仮定し、XがYのバージョンが格納されていY.
に- に依存コンパイル時にXのどこかに?
- 変更攻撃を避けるために、Yで使用される公開鍵がXのどこかに格納されていますか?
- CLRがロードするときにYのバージョンがチェックされている場合、Y が動的にロードされ、コンパイル時間が参照されていないとどうなりますか?
可能であれば、あなたの回答に参考文献を投稿してください。
アセンブリタグは、.NETアセンブリのためではなく、アセンブリプログラミングのためではありません参照してください。 – harold
ありがとうharold。私は問題を修正した。 – hsalimi
あなたの質問番号3は私が長い間前に作った実現を考えさせました... AssemblyResolveイベント(CLRが必要な依存関係を見つけることができず、あなたにそれをロードする機会を与えるときに起動する)を登録すると、 Assembly.LoadFromを呼び出して、必要なアセンブリをいくつかのエイリアンパスからロードします。これは動作します。 異なるバージョンのパスを指しているといいでしょう。別のDLLを完全に指しているとします。これも成功します。あなたがロードしたDLLは、要求されたアセンブリ名とバージョンを持つ 'バケツ' LABELEDに入れられ、残りのアプリケーションライフに使用されます! – Adam