在不重新部署依赖解决方案的情况下部署 BizTalk 架构解决方案
Deploy BizTalk Schema Solution without redeploying dependent Solutions
我有三个解决方案。一个是模式解决方案,其中只有一个模式文件,我们称之为 SchemaSolution。
在我的其他两个解决方案中引用了 SchemaSolution,因为 Solution1 在 SchemaSolution 中创建了 xml 个模式实例,并将其作为自相关放在消息框中。
这很神奇,但如果我想更新引用 SchemaSolution 的解决方案之一(部署到 BizTalk),我总是必须删除其他解决方案。这太可怕了,直到现在我才找到解决方案。
有没有(没有hacky的)方法?我考虑过将所有项目合并为一个解决方案,但这是我能想象到的实现目标的最坏情况。
如何在不删除和重新部署所有内容的情况下部署在不同解决方案中引用的项目?
正在使用 BizTalk 2013R2
不,这不受支持,也不建议尝试破解这个想法(绝对需要更改 BizTalk 数据库,我认为这甚至是 Microsoft 不允许的)。
我可以给你3个选择:
- 使 SchemaSolution 尽可能小,例如将其分解为每个进程的多个模式解决方案,这样您需要更改解决方案的机会就会更小。理想情况下,在此解决方案中,每个模式有 1 assembly/project,因此无需重新部署即可添加新模式。
- 另一种选择是将您的架构复制到您的项目中,这是您可以做出的设计选择,但需要做更多的工作,因为您需要在管道中指定架构(否则它不知道哪个你的意思是一个),并且你在多个项目中更改相同的模式有双重工作。缺点是,架构与 BizTalk 不同,因此您不能在没有引用的情况下在另一个项目中使用它。
- 您最后的选择是完全摆脱该架构的依赖性,您可以通过创建自己的 internal/generic/cdm 架构来做到这一点,理想情况下,它会更健壮且不易更改。该架构仍会被多个项目引用,但由于您是负责它的人,您可以根据自己的喜好预测和塑造它。同样,理想情况下,在此解决方案中,每个模式将有 1 assembly/project,因此无需重新部署即可添加新模式。
我在一个解决方案中有一个非常相似(如果不相同)的问题。
我有一组依赖于简单模式项目的集成项目。如果我部署一个集成项目,我必须部署架构项目,这意味着我必须部署所有集成项目!
为了独立部署它们,我只是将架构项目的属性(在 VS 中)中的重新部署标志从 true 变为 false。
这使我可以根据需要重新部署任意数量的其他依赖项目,而不必删除或乱搞。我可以部署一个集成项目而不影响其他项目。
唯一需要注意的是,当您出于某种原因重新部署时,VS 会将您在架构项目上将重新部署设置为 False 的事实标记为错误,并表示其中一个项目未部署。
不是真正的错误,更多的是警告 imo。
我在 BT2016 一直这样做,我想你在 2013 年也可以这样做
我有三个解决方案。一个是模式解决方案,其中只有一个模式文件,我们称之为 SchemaSolution。
在我的其他两个解决方案中引用了 SchemaSolution,因为 Solution1 在 SchemaSolution 中创建了 xml 个模式实例,并将其作为自相关放在消息框中。
这很神奇,但如果我想更新引用 SchemaSolution 的解决方案之一(部署到 BizTalk),我总是必须删除其他解决方案。这太可怕了,直到现在我才找到解决方案。
有没有(没有hacky的)方法?我考虑过将所有项目合并为一个解决方案,但这是我能想象到的实现目标的最坏情况。
如何在不删除和重新部署所有内容的情况下部署在不同解决方案中引用的项目?
正在使用 BizTalk 2013R2
不,这不受支持,也不建议尝试破解这个想法(绝对需要更改 BizTalk 数据库,我认为这甚至是 Microsoft 不允许的)。
我可以给你3个选择:
- 使 SchemaSolution 尽可能小,例如将其分解为每个进程的多个模式解决方案,这样您需要更改解决方案的机会就会更小。理想情况下,在此解决方案中,每个模式有 1 assembly/project,因此无需重新部署即可添加新模式。
- 另一种选择是将您的架构复制到您的项目中,这是您可以做出的设计选择,但需要做更多的工作,因为您需要在管道中指定架构(否则它不知道哪个你的意思是一个),并且你在多个项目中更改相同的模式有双重工作。缺点是,架构与 BizTalk 不同,因此您不能在没有引用的情况下在另一个项目中使用它。
- 您最后的选择是完全摆脱该架构的依赖性,您可以通过创建自己的 internal/generic/cdm 架构来做到这一点,理想情况下,它会更健壮且不易更改。该架构仍会被多个项目引用,但由于您是负责它的人,您可以根据自己的喜好预测和塑造它。同样,理想情况下,在此解决方案中,每个模式将有 1 assembly/project,因此无需重新部署即可添加新模式。
我在一个解决方案中有一个非常相似(如果不相同)的问题。 我有一组依赖于简单模式项目的集成项目。如果我部署一个集成项目,我必须部署架构项目,这意味着我必须部署所有集成项目!
为了独立部署它们,我只是将架构项目的属性(在 VS 中)中的重新部署标志从 true 变为 false。
这使我可以根据需要重新部署任意数量的其他依赖项目,而不必删除或乱搞。我可以部署一个集成项目而不影响其他项目。 唯一需要注意的是,当您出于某种原因重新部署时,VS 会将您在架构项目上将重新部署设置为 False 的事实标记为错误,并表示其中一个项目未部署。 不是真正的错误,更多的是警告 imo。
我在 BT2016 一直这样做,我想你在 2013 年也可以这样做