2010-09-09 89 views
2

我试图部署包含多个应用程序(约20左右)的公共编排的BizTalk应用程序的新版本。新版本包含一个新的编排,将被几个新的应用程序使用。重新部署由其他应用程序使用的BizTalk应用程序

当我尝试导入微星的新版本,我得到一个错误说:

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

在BizTalk服务器不是从开发环境访问,以便应用程序必须使用更新BizT alk管理控制台。如何导入更新的应用程序而无需删除并重新安装所有20个或更多的依赖应用程序?

感谢

+0

这不是总的答案,但是这篇文章帮助我确定何时需要重新部署或re'GAC。你可以把它看成你的总体战略:http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,628aecb9-4eaa-4044-88c9-92cb53f81bdf.aspx – 2010-09-13 12:59:31

回答

4

这听起来像你正在部署使用相同的版本号为现有的旧版本,新的基础应用。

什么为我们工作:

  • 每次部署应用程序的新版本,增加版本号(因为组件是GAC'ed,BTS通过并行版本支持侧)。任何已更改的定制组件也应该进行版本控制。
  • 将您的新应用程序部署到本地BizTalk后,编辑资源以确保引用的所有程序集和绑定等的正确(最新)版本都是最新版本(删除旧版本,添加新版本)。
    • 您的常见应用程序现在将包含程序集的旧版本和新版本。较新版本的“客户”应用程序将使用基本/框架/通用应用程序的较新版本。
    • 一旦所有从属应用程序都升级完毕,您可以删除旧版本。

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

1

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

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

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

我们一直这样做,因为我们有太多的应用程序做第一个解决方案。您可以将您最近编译的DLL强制进入GAC。这不是由MSFT等推荐的,但是我们在服务器上使用它, GAC和1200 BT应用程序中有4000个dll。你需要确保你的元数据是完全相同的,也就是说你有相同的版本,密钥令牌等,并且你需要有一些方法来在版本系统之外跟踪你的dll(我们构建一个自定义的部署基础设施来完成这个任务)。最后,一旦你将你的dll推入GAC,你需要重新启动你的biztalk服务。确保您没有任何引用您要重新部署的应用程序的挂起实例,因为它们将防止biztalk在重新启动时从GAC提取新的引用。

最后需要注意的是,如果您的更改需要更改MessageBox子目录(比如接收形状过滤器,相关性等的变化),则此方法将无法工作。您还将放弃协调调试器中的一些功能如果你用这种方法来改变orchs的结构。最后正确安装时,图形将显示编排的结构,但事件列表对于最新版本将是正确的。最后,如果您正在替换架构dll,则希望双倍确保您重新启动服务,因为BT将无限期地缓存架构。