我正在尝试部署新版本的BizTalk应用程序,该应用程序包含多个应用程序(大约20个左右)的通用编排。新版本包含一个新的业务流程,将由几个新应用程序使用。
当我尝试为新版本导入msi时,我收到错误消息:
“无法更新程序集”[assembly_name]“,因为它不在要更新的程序集集中的程序集中使用。 要更新程序集,请删除以下程序集:“[dependant_assembly1] [dependant_assembly2] ......“
无法从开发环境访问BizTalk服务器,因此必须使用BizTalk管理控制台更新应用程序。如何在不删除并重新安装所有20个左右的相关应用程序的情况下导入更新的应用程序?
由于
答案 0 :(得分:4)
听起来您正在部署一个新的基本应用程序,其版本号与现有的旧版本相同。
什么对我们有用:
但真正的解决方案似乎是考虑更多地解耦你的应用程序,例如通过在应用程序之间使用消息传递 - 这样,您可以将模式拆分为应用程序的公共引用。
答案 1 :(得分:1)
如果你想省略版本控制,你实际上可以在BT上进一步破解部署过程,具体取决于你对实际BT盒子的访问权限。 (说服你的系统管理员)
如果您只能访问部署控制台,请停止相关应用程序,删除对要升级的应用程序的引用,然后在顶部进行部署,重新添加引用并重新启动相关应用程序。你实际上不必重新安装。这种方法很乏味而且很糟糕但它会起作用。我们之所以这样做是因为我们的BT安装过多,以至于使用同一个应用程序的多个版本进一步混乱它们
这是黑客攻击。您需要访问服务器(我知道您说没有)或能够安装可以接收dll并为您执行以下功能的服务。 (我想你可能会说服别人让你设置它)免责声明,这不是一个支持的解决方案,我声称没有责任等等等等等等。
我们一直这样做,因为我们有太多的应用程序来做第一个解决方案。您可以将新编译的DLL抨击到GAC中。这不是MSFT等推荐的,但是我们在具有大约的服务器的生产中使用它。 GAC中的4000个dll和1200个BT应用程序。您需要确保您的元数据完全相同,即您拥有相同的版本,密钥令牌等,并且您希望有一些方法可以在版本控制系统之外跟踪您的dll(我们构建自定义部署基础架构来执行此操作)。最后,一旦将dll推入GAC,您将需要重新启动biztalk服务。确保您没有任何引用要重新部署的应用程序的挂起实例,因为它们会阻止biztalk在重新启动时从GAC中提取新引用。
最后请务必注意,如果您的更改需要更改MessageBox子目录(接收形状过滤器中的更改,相关性等等),则此方法将不起作用。您还将在业务流程调试器中放弃某些功能,如果您可以使用此方法更改orch的结构。上次正确安装时,图形将显示业务流程的结构,但您的事件列表对于最新版本是正确的。最后,如果您要替换模式dll,您需要确保重新启动服务,因为BT将无限期地缓存模式。