c# - 在运行时更新应用程序的库 (DLL)?

标签 c# dll

有没有办法在 C# 中运行应用程序时更新 DLL?例如,如果有一个 DLL 的函数如下所示:

void write()
{
    Console.WriteLine("LALALA");
}

并且它在一个线程中被调用,调用之间有 1 秒的休眠。

现在,我写了新版本:

void write()
{
    Console.WriteLine("LA LA LA\n");
}

我可以在运行时用这个新的 DLL 更新旧的 DLL 吗?重要的是我的应用程序一直启动并运行,没有任何计量......但我想更新库是一个异常(exception)。我错了吗?

最佳答案

如果您的代码可以在逻辑上隔离到单独的 DLL 中,您可以使用(正如其他人提到的)远程处理或 System.AddIn 框架。但是,根据功能的集成程度,它可能过于复杂和/或矫枉过正。 System.AddIn 方法的一个好处是可以卸载程序集,将 dll 替换为新版本,然后在不停止应用程序的情况下再次重新加载——尽管它仅设计用于轻量级插件架构,并且跨“隔离边界”的性能是会一样棒。

如果区域足够小(类似于 http://www.ironpython.net/),脚本也可能有用 - 您可以将代码存储在文本文件(或数据库,或任何地方)中并从那里加载/运行它。然后只需替换代码并重新加载即可。

我想这一切都归结为您是否可以确定可能发生变化的内容,以及是否有适合它的隔离过程。对整个应用程序执行此操作并不容易!

关于c# - 在运行时更新应用程序的库 (DLL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803698/

相关文章:

c# - 如何使用 JMeter 调用 WCF 服务?

C# Raspberry pi Linux 串行端口权限即使作为 root 也被拒绝

c# - 如何创建 nim dll 并从 C# 调用它

c++ - DLL 中显示的对话框在 Qt Creator 项目中具有 Win98/Classic 样式控件,但在 Visual Studio 中主题正确

c# - 使用多线程会加速我的 HTML 文件处理应用程序吗?

c# - 在 C# 中使用带有 API key 的 HttpClient 类的 PostAsync 方法

c# - 当我在我的 Dll 中使用过剩函数时出现 DllNotFound 异常

c# - Microsoft.Windows.Controls 是否缺少程序集引用?

c# - 为什么 ToUpperInvariant() 比 ToLowerInvariant() 快?

c# - Unity Linux 包导出正在修改我的 DLL