我有一个应用程序,它使用许多不同的.NET托管DLL作为对象(每个DLL实现一个公共接口)。每个DLL在文件名中也有一个版本号。
假设我创建了对象“Shape~01.dll”。应用程序将使用该DLL,但在应用程序运行时无法替换它。所以,如果我想“升级”形状dll,我必须创建“Shape~02.dll”,并且每次创建一个形状和/或用户必须重新启动时,应用程序必须动态搜索并加载最新的dll。应用。它变得更糟,每个dll取决于主.exe因此必须使用主.exe重建。
是否有更简单的方法来拥有动态的“可替换”对象?
答案 0 :(得分:0)
嗯,这不是最好的解决方案(仍然在考虑它),但你可以卸载dll文件,这将允许它们被替换。这可能是一个快速的权宜之计解决方案,直到你想出一个更好的主意。
答案 1 :(得分:0)
您没有提到您尝试使用哪种语言/平台,因此我将回答.NET Framework。
如果您想以严格的方式查看Shadow Assemblies,这是ASP.NET用来保持站点可更新的方法,尽管它使用的是文件。
为了更简单的方法查看新的System.Addin命名空间,这会使用阴影组件,并且应该做你想要的。
答案 2 :(得分:-1)
在创建对象时,为什么不在文件系统更改时从系统请求通知,而不是轮询?
.NET中的类是System.IO.FileSystemWatcher。
对于本机代码,有几种方法可以观看文件夹,但IANAND(我不是本地开发人员;)。
虽然已经说过这些话,但您可能想重新考虑一下您需要经常更改对象的原因,因为要使其工作可能需要做很多工作。
你使用了动态标签,所以也许你应该尝试使用动态语言? :)