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

发布于 2024-09-18 14:46:48 字数 360 浏览 14 评论 0原文

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

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

“无法更新程序集“[程序集名称]”,因为它由不在要更新的程序集集中的程序集使用。 要更新程序集,请删除以下程序集:“[dependant_ assembly1] [依赖程序集2] ...”

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

谢谢

I'm trying to deploy a new version of a BizTalk application that contains common orchestrations for several applications (about 20 or so). The new version contains a new orchestration that will be used by several new applications.

When I try importing the msi for the new version I get an error saying:

"Cannot update assembly "[assembly_name]" because it is used by assemblies which are not in the set of assemblies to update.
To update the assembly, remove the following assemblies: "[dependant_assembly1]
[dependant_assembly2]
..."

The BizTalk server is not accessible from a development environment so the application must be updated using the BizTalk administration console. How do I import the updated application without having the remove and reinstall all 20 or so dependant applications?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笛声青案梦长安 2024-09-25 14:46:48

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

对我们有用的方法:

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

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

It sounds like you are deploying a new base application with the same version numbers as an existing, older version.

What works for us:

  • Every time you deploy a new version of your application, increment the version number (since the assemblies are GAC'ed, BTS supports side by side versioning). Any custom assemblies which are changed should also be versioned.
  • After deploying to your new Application to your local BizTalk, edit the resources to ensure that the correct (latest) versions of all referenced assemblies and bindings etc are up to date (remove old ones, add new ones).
    • Your common application will now contain both old and new versions of the assemblies. Newer versions of your 'client' applications will use the later version of your base / framework / common application.
    • Once all dependent applications have been upgraded, you can then remove the old version.

But the real solution seems to be to consider decoupling your applications more, e.g. by using messaging between the applications - this way, you can split out just the schemas as a common reference to the applications.

陌上芳菲 2024-09-25 14:46:48

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

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

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

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

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

You can actually hack the deployment process on BT a little bit further than this, if you want to omit the versioning, depending on your access to the actual BT box. (Convince your sysadmin)

If you only have access to the deployment console, stop your dependent applications, remove their reference to the application you want to upgrade, and then deploy over the top, re-add your references and restart the dependent applications. You don't actually have to reinstall.This method is tedious and sucks but it will work. We do this because we have too much in our BT installs to further clutter them with multiple versions of the same app

Here is the hack. You'll need either access to the server (which I know you said you don't have) or the ability to install a service which can receive a dll and preform the below function for you. (I'm thinking you might convince someone to let you set this up) DISCLAIMER, this is not a supported solution and I claim no responsibilty blah blah blah

We do this all the time as we have WAY too many applications to do the first solution. You can slam your newly compiled DLL into the GAC. This NOT recommended by MSFT etc. but we use it in production on servers that have approx. 4000 dlls in the GAC and 1200 BT applications. You'll need to make sure that your metadata is identical i.e. you have the same version, key token etc. and you'll want to have some way of tracking your dlls outside the versioning system (we build a custom deployment infrastructure to do this). Finally once you have pushed your dlls into the GAC you'll need to restart your biztalk services. Make sure you don't have any suspended instances referencing the app you want to redeploy because they will prevent biztalk from pulling a new reference from the GAC when it restarts.

Finally it is important to note that this method will NOT work if your changes require changes in the MessageBox subscrition (things like changes in receive shape filters, correlations etc.) You will also be giving up some functionality in the orchestration debugger if you use this method to change the structure of orchs. The graphic will display the structure of the orchestration when last properly installed but your event list will be correct for the newest version. Finally, if you are replacing schema dlls you want to make doubly sure that you restart services as BT will cache schemas indefinitely.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文