2

BINおよびGACからアセンブリをロードする方法を示す議論はたくさんあります...私の質問はより一般的であり、アセンブリのロードがどのように機能するか知りたいです。

例えば

私たちが持つことができるBINフォルダに

A.dll
A.dll.config 

.dll.config ファイルは次のようになります。

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

正しいアセンブリ参照を設定するのに役立ちます。

B.dll を必要とするがバージョンを指定せずに、BIN フォルダーにある B.dll を常に取得する場合は、どうすれば A.dll を作成できるのか疑問に思っていました。

私の質問は、SDK の更新に関するもので、私のすべてのコードはまだ古い SDK バージョンを指しています。アセンブリに、リソース、BIN または GAC のすべてのバージョンの最上位を探してもらい、それを使用したかったのです...

Visual Studioでそれをどのように言えますか? 参照を物理ファイル (バージョン) にのみ追加できます:-(

4

2 に答える 2

1

私が正しく理解していれば、AppDomainオブジェクトを介して物事を行う「プラグイン」の方法を使用できると思います。おそらく、AppDomainを介してアセンブリをロードします。ロードされたアセンブリのパスを設定できるため、ファイルを簡単に置き換え、アセンブリをアンロードし、ShadowCopyで新しいアセンブリを再ロードできます。ShadowCopyを使用すると、現在のファイルアセンブリと同じ場所にある最新のファイルをコピーできます。次に、新しいファイルをチェックするメカニズムを構築し、存在する場合は、アセンブリをアンロードして最新のファイルをリロードします。このように、あなたの側からもう少しプログラミングが必要ですが、すべてがあなたのプログラムに対して非常に透過的になります。それにもかかわらず、あなたは長期的な開発で利益を得るでしょう。

于 2009-10-19T14:51:57.247 に答える
1

遅延バインディングとリフレクションを使用できます。これについては多くの場所で読むことができますが、ここから始めることができます。

于 2009-10-19T12:58:27.920 に答える