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 强名称程序集后,我无法创建 pluginA.dll IPlugin 实现的实例,除非我重新编译 pluginA.dll 以引用新的强名称 interface.dll

有没有办法让我在 interface.dll 和 load.exe 上设置强名称,而不必重新编译所有实现 IPlugin 的插件?

我问这个的原因是我有很多插件,但我无法控制所有插件。因此,当我使用强名称更新 interface.dll 时,我想避免破坏插件功能。

我希望你能帮助我,如果有不清楚的地方,请随时询问更多细节。

谢谢

4

2 回答 2

1

为程序集起一个强名称是一项艰难的突破性更改。您无法使用配置文件或发布者策略对其进行修补。所以重建插件是一个你不能跳过的硬性要求。

您没有另外说明决定这样做的原因。在插件方案中没有引人注目的。强名称提供了一种方法来验证程序集是否与构建程序的参考程序集完全匹配。但是,根据设计,您没有插件的参考程序集所以没有什么可以验证的。

于 2013-02-26T18:05:17.270 回答
0

不幸的是,没有办法解决这个问题。如果您可以引用简单命名的程序集,那么您从对程序集进行强命名(很可能是您转换程序集的原因)中获得的好处就会丢失。

来自微软的文档

当您引用强名称程序集时,您期望获得某些好处,例如版本控制和命名保护。如果强名称程序集随后引用了一个没有这些好处的简单名称的程序集,则您将失去使用强名称程序集所获得的好处并恢复为 DLL 冲突。因此,强名称程序集只能引用其他强名称程序集。

于 2013-02-26T16:01:17.990 回答