假设在名为 的程序集中有一个单例类Common
。这个 DLL 由我的主应用程序使用,并且插件文件夹中的插件 DLL 可以使用不同的版本。
分布如下所示:
\App.exe
\Common.dll (v1)
\Plugins\Plugin.dll
\Plugins\Common.dll (v2)
因此,两者中的代码都App
在Plugin
使用该单例类。我面临一个难以追踪的错误,这让我认为有时单例类会丢失其所有属性值并开始表现得像一个新实例。从堆栈跟踪来看,这总是在插件 DLL 访问它时发生。
编辑:我刚刚发现了一些应用程序正在访问它的堆栈跟踪。所以取消上段的最后一行。
App
和(不同的 VS 项目)都Plugin
通过添加到各自Common
DLL 版本的引用进行编译和链接。
编辑:在主 AppDomain 中Plugin
使用加载。Assembly.LoadFrom
编辑:Common
插件文件夹中的 DLL v2 也与Plugin
DLL 一起动态加载,因为所有 DLL 都是从该文件夹加载的:
foreach( string extensionFile in Directory.GetFiles( ExtensionsDirectory, "*.dll" ) )
任何人都可以帮助发生什么事吗?