【发布时间】:2013-11-12 02:46:47
【问题描述】:
我有一个 winform c# 应用程序。
我可以使用 [web 方法] 来检查我的客户端 winform 应该使用的 DLL 版本。我也可以下载。但是,如果我复制旧的 DLL,我会收到一条错误消息,指出该文件正在使用中。这是我预料到的。
有没有办法从我正在运行的 winform 应用程序中卸载这个 DLL,复制 DLL 并重新加载它?
我不想为我的更新程序使用引导程序,它可能不得不停止并重新启动我的应用程序。
如果我可以卸载我的 DLL,所有这些都将过时。
我找了很长时间,找不到任何东西。在我退休之前,我想我会在这里发布问题。
谢谢
PS 我可以发布显示如何在代码中加载 DLL 以及由此产生的错误的代码,但它是开放知识,不会添加到这个问题中。
【问题讨论】:
-
您必须创建一个单独的 AppDomain 来容纳要加载/卸载的 .dll 文件。
-
在应用程序域的生命周期内加载程序集。如果要动态更新,则必须将其加载到单独的应用程序域中。或者你可以通过创建一个新的 AppDomain 切换,在 appdomain 中启动你的更新程序,杀死主 appdomain。已更新执行相同但重新启动您的应用程序
-
那么,您知道我的主应用程序在不同的应用程序域中引用 DLL 是否可行?这是你的建议吗?谢谢
标签: c# live-update