2

私はすべてが弱いアセンブリを使用してコンパイルされるプラグイン構造を持っています。今これを変更したいのですが、いくつかの問題が発生しています。

interface.dll contains my interface for my plugins (IPlugin)
Load.exe will load all the plugin implementations which implements IPlugin
pluginA.dll contains a implementation of IPlugin

すべてのアセンブリは元の弱いアセンブリです。

ここで、アセンブリを厳密な名前のアセンブリに変更したいと思います。

interface.dllとload.exeの厳密な名前のアセンブリを作成した後、新しい厳密な名前のinterface.dllを参照するようにpluginA.dllを再コンパイルしない限り、pluginA.dllIPlugin実装のインスタンスを作成できません。

IPluginを実装するすべてのプラグインを再コンパイルすることを強制されることなく、interface.dllとload.exeに厳密な名前を設定する方法はありますか?

私がこれを尋ねる理由は、私はたくさんのプラグインを持っていて、それらすべてを制御することができないからです。そのため、interface.dllを厳密な名前で更新したときに、プラグインの機能が損なわれるのを避けたいと思います。

ご協力いただければ幸いです。不明な点がございましたら、お気軽にお問い合わせください。

ありがとう

4

2 に答える 2

1

アセンブリに強い名前を付けることは、大きな変化です。構成ファイルまたは発行元ポリシーでパッチを適用することはできません。したがって、プラグインの再構築は、スキップできない難しい要件です。

そうすることを決定した理由を他の方法で述べていませんでした。プラグインのシナリオには、説得力のあるものはありません。厳密な名前は、アセンブリがプログラムの作成に使用された参照アセンブリと完全に一致することを確認する方法を提供します。ただし、設計上、プラグインのリファレンスアセンブリはありませんしたがって、確認するものは何もありません。

于 2013-02-26T18:05:17.270 に答える
0

残念ながら、これを回避する方法はありません。単純な名前付きアセンブリを参照できる場合、アセンブリに厳密な名前を付けることで得られる利点(おそらく、変換する理由)は失われます。

Microsoftのドキュメントから:

厳密な名前のアセンブリを参照すると、バージョン管理や名前付けの保護など、特定の利点が得られることが期待されます。厳密な名前のアセンブリが単純な名前のアセンブリを参照している場合、これらの利点はありません。厳密な名前のアセンブリを使用することで得られる利点が失われ、DLLの競合に戻ります。したがって、厳密な名前のアセンブリは、他の厳密な名前のアセンブリのみを参照できます。

于 2013-02-26T16:01:17.990 に答える