我使用Visual Studio .NET创建将由两个客户端应用程序共享的组件。最后,我计划部署该组件的新版本。但是,并非所有新版本都与两个客户端应用程序兼容。当我部署组件和客户端应用程序时,我必须确保我可以为单个客户端应用程序升级组件。在部署新版本的组件时,我还必须最小化配置更改的需要。有哪些方法可以实现这一目标?
答案 0 :(得分:1)
您的选择有限。
如果您只是链接到组件,那么两个应用程序将在发布时使用最新版本。
如果链接到特定版本的组件,您将解决中断更改的问题,但这意味着您必须更新应用程序的配置以在适用时链接到较新版本。
我认为您需要解决为什么要对组件进行重大更改。
答案 1 :(得分:0)
最好的办法可能就是设置构建符号并使用#ifdef App1和#ifdef App2启用或禁用代码片段...意味着您不必管理多个项目或分支或类似的东西......假设代码库仍然相对类似,那么实现你想要的东西最不麻烦
答案 2 :(得分:0)
如果要部署到全局程序集缓存,只需确保为程序集的每个版本指定不同的AssemblyVersion,然后您可以并排安装它们。针对版本1构建的应用程序将继续针对版本1运行,针对版本2构建的应用程序将继续针对版本2运行。您可以使用<bindingRedirect>
配置元素重定向单个应用程序。 (发布者策略会影响所有应用程序,因此您需要对app.config进行更改。)
如果您没有使用GAC,而是将DLL部署到与EXE相同的目录,则无需担心并行版本控制。如果无法针对较新的DLL重建EXE,则需要如上所述指定重定向。
如果这一切听起来令人困惑,那你就是对的。如果可能的话,我会考虑使用ClickOnce来部署您的应用程序,这使得部署更新的过程变得微不足道。 ClickOnce已部署的应用程序未安装到GAC,并根据您定义的策略自动检查更新。