作者:营在天下的世界_141 | 来源:互联网 | 2023-09-25 17:33
我有一个winformc#app.我可以使用[web方法]来检查我的客户端winform应该使用的DLL的版本.我也可以下载它.但是,如果我复制旧的DLL,我将收到一个错误,指出该
我有一个winform c#app.
我可以使用[web方法]来检查我的客户端winform应该使用的DLL的版本.我也可以下载它.但是,如果我复制旧的DLL,我将收到一个错误,指出该文件正在使用中.我曾预料到这一点.
有没有办法从我运行的winform应用程序卸载此DLL,复制DLL并重新加载它?
我不想为我的更新程序使用boot-strapper,它可能需要停止并重新启动我的应用程序.
如果我可以卸载我的DLL,所有这些都将过时.
我找了很久,找不到任何东西.在我退休之前,我想我会在这里发布问题.
谢谢
PS
我可以发布代码,显示如何在代码中加载DLL和从它生成的错误,但它是开放的知识,并没有添加到这个问题.
解决方法:
Is there a way to unload this DLL from my running winform app, copy over the DLL and reload it?
不是在大多数情况下.在托管应用程序中卸载DLL的唯一方法是卸载整个AppDomain.这通常意味着您需要非常小心如何使用程序集(您不能直接引用并正常使用它).
I do not want to use a boot-strapper for my updater and it may come to having to stop and restart my application.
这是最常用的方法.在应用程序中完成这项工作实质上是将引导程序构建到应用程序本身(在其自己的AppDomain中),并使用程序集卸载/重新启动AppDomain.这通常是更多的工作,就像单独的引导程序应用程序一样中断.