パートナーの 1 人が、アプリケーションからアクセスする必要があるアセンブリを提供してくれました。残念ながら、これは厳密な名前ではないため、GAC にインストールすることはできません。また、実行可能ファイルと同じ場所に配置することはできません。
これに対する解決策はありますか?
編集: これはテスト用の一時的な解決策であり、RC に移行すると、厳密な名前のアセンブリが作成されます。
その時点でいくつかのオプションがあります。
1 つ目は、アプリケーション ディレクトリのサブディレクトリであるアセンブリの名前 (拡張子なし) を持つディレクトリにアセンブリを配置することです。
2 つ目は、 probing 要素を使用して app.config ファイル内の参照を CLR でプローブするサブ ディレクトリを指定することです。
最後に、Assembly クラスのさまざまな Load メソッドを使用してアセンブリを動的に読み込むことができますが、アセンブリがあり、その中で使用したい具象型があることを考えると、この場合は非常に悪い考えです。このような遅い時間のアセンブリの読み込みは、通常、特定の抽象化の実装を置き換えたい場合に使用されますが、ここではそうではないようです。
逆コンパイルと署名を使用した回避策 (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/09/29/signing-a-net-assembly-in-visual-studio/を使用してファイルとして生成でき ます。
その後、実行できるはずです
gacutil.exe -i DataSystem.dll
さらに別の解決策は、次を machine.config ファイルに追加することです。
<runtime>
<developmentMode developerInstallation="true"/>
</runtime>
そして、システム環境変数に DEVPATH = path を追加します。