重新部署其他应用程序使用的BizTalk应用程序

时间:2010-09-09 16:26:02

标签: biztalk biztalk2006r2 biztalk-deployment

我正在尝试部署新版本的BizTalk应用程序,该应用程序包含多个应用程序(大约20个左右)的通用编排。新版本包含一个新的业务流程,将由几个新应用程序使用。

当我尝试为新版本导入msi时,我收到错误消息:

  

“无法更新程序集”[assembly_name]“,因为它不在要更新的程序集集中的程序集中使用。   要更新程序集,请删除以下程序集:“[dependant_assembly1]   [dependant_assembly2]   ......“

无法从开发环境访问BizTalk服务器,因此必须使用BizTalk管理控制台更新应用程序。如何在不删除并重新安装所有20个左右的相关应用程序的情况下导入更新的应用程序?

由于

2 个答案:

答案 0 :(得分:4)

听起来您正在部署一个新的基本应用程序,其版本号与现有的旧版本相同。

什么对我们有用:

  • 每次部署新版本的应用程序时,请增加版本号(因为程序集是GAC,BTS支持并排版本控制)。任何已更改的自定义程序集也应进行版本控制。
  • 在将新应用程序部署到本地BizTalk之后,编辑资源以确保所有引用的程序集和绑定等的正确(最新)版本是最新的(删除旧版本,添加新版本)。
    • 您的常用应用程序现在将包含旧版本和新版本的程序集。较新版本的“客户端”应用程序将使用更高版本的基础/框架/通用应用程序。
    • 升级所有相关应用程序后,您可以删除旧版本。

但真正的解决方案似乎是考虑更多地解耦你的应用程序,例如通过在应用程序之间使用消息传递 - 这样,您可以将模式拆分为应用程序的公共引用。

答案 1 :(得分:1)

如果你想省略版本控制,你实际上可以在BT上进一步破解部署过程,具体取决于你对实际BT盒子的访问权限。 (说服你的系统管理员)

如果您只能访问部署控制台,请停止相关应用程序,删除对要升级的应用程序的引用,然后在顶部进行部署,重新添加引用并重新启动相关应用程序。你实际上不必重新安装。这种方法很乏味而且很糟糕但它会起作用。我们之所以这样做是因为我们的BT安装过多,以至于使用同一个应用程序的多个版本进一步混乱它们

这是黑客攻击。您需要访问服务器(我知道您说没有)或能够安装可以接收dll并为您执行以下功能的服务。 (我想你可能会说服别人让你设置它)免责声明,这不是一个支持的解决方案,我声称没有责任等等等等等等。

我们一直这样做,因为我们有太多的应用程序来做第一个解决方案。您可以将新编译的DLL抨击到GAC中。这不是MSFT等推荐的,但是我们在具有大约的服务器的生产中使用它。 GAC中的4000个dll和1200个BT应用程序。您需要确保您的元数据完全相同,即您拥有相同的版本,密钥令牌等,并且您希望有一些方法可以在版本控制系统之外跟踪您的dll(我们构建自定义部署基础架构来执行此操作)。最后,一旦将dll推入GAC,您将需要重新启动biztalk服务。确保您没有任何引用要重新部署的应用程序的挂起实例,因为它们会阻止biztalk在重新启动时从GAC中提取新引用。

最后请务必注意,如果您的更改需要更改MessageBox子目录(接收形状过滤器中的更改,相关性等等),则此方法将不起作用。您还将在业务流程调试器中放弃某些功能,如果您可以使用此方法更改orch的结构。上次正确安装时,图形将显示业务流程的结构,但您的事件列表对于最新版本是正确的。最后,如果您要替换模式dll,您需要确保重新启动服务,因为BT将无限期地缓存模式。