我们有一个c#,.NET 4.0,我们部署到终端服务器的Windows应用程序。 (使用VS 2010开发)。此应用程序使用位于另一台服务器上的多个WCF服务。
我们的用户通过远程桌面会话访问前端。 (他们的桌面上都有.RDP文件。)
我的问题是关于这个前端的部署。目前,如果我们需要在工作时间进行紧急部署,我们需要关闭所有挂在应用程序中的用户(因为他们正在使用我们需要替换的dll)。显然,这并不理想。我们在相当关键的业务环境中工作,因此这些部署是不可避免的。我已经调查了ClickOnce,但已经读过你不能将它用于终端服务应用程序here。 (哪种有意义,因为它实际上是一个被几个客户“访问”的应用程序......)
我希望能够进行“静默”部署,直到用户重新启动应用程序实例,用户才知道修复程序。我不确定这是否可能?
我将不胜感激任何指导或建议!
答案 0 :(得分:2)
是的,我一直使用RD应用程序执行此操作 - 您只需移动或重命名DLL而不是删除它们。 Windows允许在使用DLL时移动和重命名,但阻止您删除它们。如果您使用Windows Installer来部署应用程序,它将自动执行移动(并在下次重新引导系统时删除旧版本)。
以这种方式替换DLL后,现有会话将继续使用旧的重命名版本,新会话将使用新版本。当然,根据你有多少DLL,你的应用程序将它们加载到内存需要多长时间,以及你在服务器上有多少活动,你可能遇到一个场景,其中应用程序加载一些旧的DLL和一些当你正在更新它们时,新的那些,但这可能很少见。