【问题标题】:Alternative to DLL's as objects (dynamically replaceable objects)替代 DLL 作为对象(动态可替换对象)
【发布时间】:2010-09-26 13:54:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: dll dynamic object


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      要获得更简单的方法,请查看新的 System.Addin 命名空间,它在底层使用影子组件,应该可以满足您的需求。

      【讨论】:

        【解决方案3】:

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

        类是System.IO.FileSystemWatcher in.NET。

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-27
          • 2021-06-14
          • 2020-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多