![](/img/trans.png)
[英]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.