0

我有一个应用程序,它使用许多不同的 .NET 托管 DLL 作为对象(每个 DLL 实现一个公共接口)。每个 DLL 在文件名中也有一个版本号。

假设我创建了对象“Shape~01.dll”。应用程序将使用该 DLL,但在应用程序运行时无法替换它。因此,如果我想“升级”形状 dll,我必须创建“Shape~02.dll”,并且应用程序必须在每次创建形状时动态搜索并加载最新的 dll 和/或用户必须重新启动应用。更糟糕的是,每个 dll 都依赖于主 .exe,因此必须使用主 .exe 重新构建。

有没有更简单的方法来动态“替换”对象?

4

3 回答 3

0

好吧,这不是最好的解决方案(仍在考虑中),但是您可以卸载 dll 文件,这将允许它们被替换。在你想出一个更好的主意之前,这可能是一个快速的权宜之计。

于 2008-12-12T02:57:10.423 回答
0

您没有提及您尝试使用哪种语言/平台来完成此操作,因此我将回答 .NET Framework。

如果您想以艰难的方式执行此操作,请查看 Shadow Assemblies,这是 ASP.NET 用来保持站点可更新的方法,尽管它正在使用文件。

对于更简单的方法,请查看新的System.Addin命名空间,它在后台使用 Shadow Assemblies,并且应该做你想做的事。

于 2008-12-12T03:12:15.150 回答
-1

与其在创建对象时轮询,不如在文件系统发生变化时向系统请求通知?

该类是.NET 中的System.IO.FileSystemWatcher

对于本机代码,有几种方法可以查看文件夹,但 IANAND(我不是本机开发人员;)。

尽管说了这些话,但您可能想重新考虑需要如此频繁地更改对象的原因,因为要使其正常工作可能需要大量工作。

您使用了动态标签,所以也许您应该尝试使用动态语言?:)

于 2008-12-12T03:13:00.763 回答