我正在尝试创建BizTalk应用程序(App1
)并使用BTSTask
命令行实用程序添加资源。一些App1
BizTalk程序集依赖于一些SharedApp
BizTalk程序集。我使用SharedApp
将gacutil
程序集添加到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
答案 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管理数据库中也需要它们。
感谢那些看过这个问题的人。