2013-04-10 55 views
1

我正在嘗試創建一個BizTalk應用程序(App1)並使用BTSTask命令行實用程序添加資源。某些App1 BizTalk程序集依賴於幾個SharedApp BizTalk程序集。我使用gacutilSharedApp程序集添加到GAC,並驗證它們是否存在於GAC中。當我運行BTSTask AddResource時,對於任何取決於任何SharedApp程序集的任何App1 BizTalk程序集,該命令都會失敗。即使使用GAC中的共享程序集,BTSTask AddResource也會失敗

該錯誤消息告訴我一個特定的SharedApp找不到dll以供參考。我已經驗證了SharedApp組件的詳細信息(名稱,版本等)是否正確;它是正確的程序集並存在於GAC中。

不應該BizTalk能夠在GAC中檢測到那些SharedApp程序集並允許它們在我呼叫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

'SharedApp'程序集是.NET程序集還是biztalk程序集?另外,你可以發佈你的腳本嗎? – 2013-04-15 04:30:10

+0

「SharedApp」程序集是BizTalk程序集,如上所述。 – Michael 2013-04-16 18:21:33

回答

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管理數據庫中也是需要的。

謝謝那些看過這個問題的人。

0

這是2010的BizTalk?在這種情況下,這可能與.NET 4.0引入的「雙緩存」有關。 如您所知,現在有2個全局程序集緩存和來自2.0 GAC的程序集不能使用4.0 GAC程序集。
因此,也許您的SharedApp位於.NET4.0緩存中,並且要添加的資源是針對舊版BizTalk進行編譯的?

只是大聲思考,你永遠不知道它是否有幫助。 乾杯

+0

這是使用.NET 2.0的BizTalk 2006,因此4.0 GAC沒有問題。 – Michael 2013-04-12 13:49:34

+0

對不起,似乎是別的東西。我過去記得的一件事是,系統文件夾中存在一些文件(如隱藏的GAC),其中包含舊版本的dll,而這些文件正在使用,而不是真正的GAC。這可能沒有什麼,但也許你的C盤上做一個dir/s來搜索你的dll,看看你有沒有不應該在那裏的東西。 – 2013-04-12 15:49:56

相關問題