非厳密な名前のアセンブリを、GAC 内にあるかのように登録して読み込むにはどうすればよいですか?
質問
パートナーの 1 人が、アプリケーションからアクセスする必要があるアセンブリを提供してくれました。残念ながら、これは厳密な名前ではないため、GAC にインストールできません。また、実行可能ファイルと同じ場所に配置することはできません。
これに対する解決策はありますか?
編集:これはテスト専用の一時的な解決策であり、RC に移行すると、厳密な名前のアセンブリが作成されます。
解決
その時点でいくつかの選択肢があります。
1 つ目は、次のディレクトリにアセンブリを配置することです。 アプリケーション ディレクトリのサブディレクトリであるアセンブリの名前 (拡張子なし).
2 つ目は、CLR が app.config ファイル内の参照を調査するサブ ディレクトリを指定することです。 プローブ要素.
最後に、さまざまなメソッドを使用してアセンブリを動的にロードできます。 Assembly クラスにメソッドをロードする しかし、それはそうだと思います とても アセンブリがあり、その中で使用したい具体的な型があることを考えると、この場合は悪い考えです。このような遅い時間のアセンブリ読み込みは、通常、特定の抽象化の実装を置き換えたい場合に使用されますが、ここでは当てはまらないようです。
他のヒント
回避策(Visual Studio用プロンプトデベロッパーのコマンドを使用して)逆コンパイル&署名を使用します:
ildasm.exe /all /typelist /out=DataSystem.il DataSystem.dll
ilasm.exe /dll /optimize /key=DataSystem.snk DataSystem.il
DataSystem.snkは、Visual Studio IDEを使用してファイルとして生成することができます ます。http://www.bloggedbychris。 COM / 2011/9月29日/署名 - ネット・組立・イン・ビジュアル・スタジオ/ の
あなたが実行することができます。
gacutil.exe -i DataSystem.dll
さらに別の解決策は、machine.configファイルに次を追加することです。
<runtime>
<developmentMode developerInstallation="true"/>
</runtime>
そして、システム環境変数に=パスをDEVPATHを追加します。
署名し、私はここにいた見つかったアセンブリを登録するための最良かつ最もストレートフォワードソリューション: ます。http:// codeingaddiction。 blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.htmlする
私は、これはCのようないくつかのディレクトリに簡単にI CD'dを動作させるためには:\ TEMP - これはおそらくそのようなどこかでより多くのアクセス可能なファイルのパーミッションを、私にはかなり良く動作するように見えます。