有没有办法在 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/