我有一个插件结构,所有使用弱程序集编译。我现在想改变一下,但是遇到一些困难。
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时,我想避免破坏插件功能。
我希望你能帮助我,如果有什么不清楚的,请不要犹豫,询问进一步的细节。
谢谢
给程序集一个强名称是一个艰难的改变。您不能使用配置文件或发布者策略来修补它。因此,重新构建插件是一个您不能跳过的硬性要求。
否则你没有说明决定这样做的原因。在插件场景中没有引人注目的插件。强名称提供了一种方法来验证程序集是否与构建程序时使用的引用程序集完全匹配。但是,根据设计,您没有为插件提供参考程序集。所以没有什么需要验证的不幸的是,这是没有办法的。如果您可以引用简单命名的程序集,那么您从程序集强命名中获得的好处(很可能是您转换程序集的原因)就会丢失。
来自Microsoft的文档:
当您引用强命名程序集时,您希望获得某些好处,例如版本控制和命名保护。如果强名称程序集随后引用具有简单名称的程序集,而该名称不具有这些好处,则您将失去使用强名称程序集所获得的好处,并恢复到DLL冲突。因此,强名程序集只能引用其他强名程序集。