[英]Map shared folder on another domain using net.exe in a c# Windows Service application
[英]Replacing a DLL on a Windows shared folder that is used by a C# .NET application
我们有一个企业管理软件,我们的客户将其部署到 Windows 网络共享文件夹中,来自多个终端服务器的多个用户从中启动我们的程序。
我们试图实现的是一种在用户使用程序来应用补丁修复错误时替换 DLL 的方法。 目前奇怪的是,我们能够重命名旧的 DLL 以替换和应用新的 DLL,而不会对正在使用的文件产生任何错误。
这给我们带来了两个问题:
最重要的是,我认为我们正在做一些我们不应该做的事情:重命名正在使用的东西。
到目前为止,我发现的可能解决方案有两个:
你们中有人对如何安全地克服这个问题有任何其他想法吗? 或者如何通过反射解决我上面提到的最后一点?
您可以尝试穷人版的蓝/绿部署。
将您的应用程序文件部署到两个相同的文件夹中
\\SomeMachine\d$\MyApp\Green
\\SomeMachine\d$\MyApp\Blue
现在在根文件夹中放置一个快捷方式,如下所示:
\\SomeMachine\d$\MyApp\MyApp.lnk
从指向绿色文件夹中 .exe 的快捷方式开始。
告诉您的用户始终仅使用快捷方式启动应用程序(而不是导航到绿色或蓝色文件夹并在那里启动它)。
需要更新 DLL 时,请执行以下过程:
MyApp.lnk
快捷方式以指向 Blue。在您更新之前启动其应用程序的用户将继续点击绿色文件夹,直到他们退出应用程序。 任何重新启动应用程序的人都会点击蓝色文件夹。
下次您必须更新 DLL 时,请反转该过程。 在 Green 文件夹中进行修改,然后更新快捷方式以指向 Green。
这样,您总是会更新一个没人使用的文件夹,然后通过快捷方式使其可用。 只要人们不时退出应用程序,您就应该能够无缝部署。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.