即使在GAC中使用共享程序集,BTSTask AddResource也会失败

时间:2013-04-10 02:51:03

标签: command-line biztalk gac biztalk2006r2

我正在尝试创建BizTalk应用程序(App1)并使用BTSTask命令行实用程序添加资源。一些App1 BizTalk程序集依赖于一些SharedApp BizTalk程序集。我使用SharedAppgacutil程序集添加到GAC,并验证它们是否存在于GAC中。当我运行BTSTask AddResource时,任何依赖于任何App1程序集的SharedApp BizTalk程序集的命令都会失败。

错误消息告诉我找不到特定的SharedApp dll以供参考。我已经验证了SharedApp程序集中的详细信息(名称,版本等)是否正确;它是正确的程序集,存在于GAC中。

当我呼叫SharedApp时,BizTalk是否应该能够检测到GAC中的那些AddResource程序集并允许它们用作参考程序集?

有关将SharedApp程序集添加到GAC的原因的任何想法都无法解决我的问题吗?

编辑:添加命令行示例文字

BTSTask.exe AddApp -ApplicationName:App1 -Server:BTServer1 -Database:BTDatabase1 -Description:App1_instance
BTSTask.exe AddResource -ApplicationName:App1 -Source:"path_to_App1.Assembly.dll" -Destination:"destination_path_for_App1.Assembly.dll" -Type:BizTalkAssembly -Options:GacOnAdd,GacOnInstall -Overwrite -Server:BTServer1 -Database:BTDatabase1

2 个答案:

答案 0 :(得分:0)

这是BizTalk 2010吗?在这种情况下,它可能与.NET 4.0引入的“双缓存”有关。 您可能知道,现在有来自2.0 GAC的2个全局汇编缓存和程序集无法使用4.0 GAC程序集 那么也许你的SharedApp在.NET4.0缓存中,你要添加的资源是针对旧版本的BizTalk编译的?

大声思考,你永远不知道它是否有帮助。 干杯

答案 1 :(得分:0)

在深入了解我们的自动化并启用详细日志之后,我能够得到更清晰的错误消息:

Error: Assembly "App1.Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxx" references the following assemblies that must be deployed before deploying this assembly: Assembly "SharedApp.Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yyyyyyyyyyyyyyyy"

在线搜索该错误后,我从a discussion post

中发现了以下内容
  

如果[a] DLL包含XSD(BizTalk)模式,则还必须将其部署到   BizTalk管理数据库。

显然,除了将程序集添加到GAC之外,还必须执行此操作。这就是为什么在我的应用程序中添加App1程序集会失败的原因;虽然我将SharedApp BizTalk程序集添加到GAC,但BizTalk管理数据库中也需要它们。

感谢那些看过这个问题的人。