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

重新部署其他应用程序使用的BizTalk应用程序,biztalk,biztalk2006r2,biztalk-deployment,Biztalk,Biztalk2006r2,Biztalk Deployment,我正在尝试部署BizTalk应用程序的新版本,该版本包含多个应用程序(大约20个)的公共业务流程。新版本包含将由多个新应用程序使用的新编排 当我尝试导入新版本的msi时,会出现一个错误,错误是: “无法更新程序集”[assembly_name]”,因为它被不在要更新的程序集中的程序集使用。 要更新程序集,请删除以下程序集:“[从属程序集1] [受抚养人2] ……” 无法从开发环境访问BizTalk server,因此必须使用BizTalk管理控制台更新应用程序。如何导入更新后的应用程序,而无需删

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

当我尝试导入新版本的msi时,会出现一个错误,错误是:

“无法更新程序集”[assembly_name]”,因为它被不在要更新的程序集中的程序集使用。 要更新程序集,请删除以下程序集:“[从属程序集1] [受抚养人2] ……”

无法从开发环境访问BizTalk server,因此必须使用BizTalk管理控制台更新应用程序。如何导入更新后的应用程序,而无需删除并重新安装所有20个左右的从属应用程序


谢谢

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

什么对我们有效:

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

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

实际上,你可以在BT上对这个部署过程进行更深入的破解,如果你想省略版本控制,D依赖您对实际BT框的访问。(说服您的系统管理员)

如果您只能访问部署控制台,请停止您的从属应用程序,删除它们对要升级的应用程序的引用,然后在顶部部署,重新添加引用并重新启动从属应用程序。您实际上不必重新安装。此方法冗长乏味,但会起作用。我们这样做是因为我们的BT安装太多了,以至于同一个应用程序的多个版本会使它们更加混乱

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

我们一直这样做,因为我们有太多的应用程序要做第一个解决方案。您可以将新编译的DLL猛击到GAC中。MSFT等不建议这样做。但我们在生产中使用它,GAC和1200 BT应用程序中有大约4000个DLL。您需要确保元数据相同,即相同的版本、密钥令牌等,并且您希望能够在版本控制系统之外以某种方式跟踪DLL(为此,我们构建了一个自定义部署基础设施)。最后,将DLL推入GAC后,您需要重新启动biztalk服务。请确保没有任何挂起的实例引用要重新部署的应用,因为它们将阻止biztalk在GAC重新启动时从GAC中提取新引用


最后,需要注意的是,如果您的更改需要更改MessageBox订阅(例如更改接收形状过滤器、相关性等),则此方法将不起作用如果使用此方法更改ORCH的结构,您还将放弃编排调试器中的某些功能。上次正确安装时,图形将显示编排的结构,但最新版本的事件列表将是正确的。最后,如果您要替换架构DLL,则要加倍请确保重新启动服务,因为BT将无限期地缓存架构。

这不是全部答案,但这篇文章过去曾帮助我确定何时需要重新部署或重新部署GAC。您可以将此纳入总体策略: