BTTask AddResource не работает даже с общими сборками в GAC

Я пытаюсь создать приложение BizTalk (App1) и добавить ресурсы с помощью утилиты командной строки BTSTask. Некоторые из App1 сборок BizTalk зависят от нескольких SharedApp сборок BizTalk. Я добавил сборки SharedApp в GAC с помощью gacutil и убедился, что они присутствуют в GAC. Когда я запускаю BTSTask AddResource, команда завершается ошибкой для любой сборки App1 BizTalk, которая зависит от любой из сборок SharedApp.

Сообщение об ошибке говорит мне, что конкретная SharedApp dll не может быть найдена для справки. Я проверил правильность сведений (имя, версия и т. д.) сборки SharedApp; это правильная сборка и присутствует в GAC.

Разве BizTalk не должен обнаруживать эти сборки SharedApp в GAC и разрешать их использование в качестве эталонных сборок, когда я вызываю AddResource?

Любые мысли о том, почему добавление SharedApp сборок в GAC не решило мою проблему?

EDIT: Добавление примера текста командной строки

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

person Michael    schedule 10.04.2013    source источник
comment
Являются ли сборки «SharedApp» сборками .NET или сборками biztalk? Кроме того, вы можете опубликовать свой сценарий?   -  person brunch    schedule 15.04.2013
comment
Как уже отмечалось, сборки SharedApp являются сборками BizTalk.   -  person Michael    schedule 16.04.2013


Ответы (2)


Это BizTalk 2010? В этом случае это может быть связано с «двойным кешем», представленным в .NET 4.0. Как вы, возможно, знаете, теперь существует 2 глобальных кэша сборок, а сборки из GAC версии 2.0 не могут использовать сборки GAC версии 4.0.
Возможно, ваше приложение SharedApp находится в кэше .NET4.0, а ресурс, который вы хотите добавить, скомпилирован для старая версия BizTalk?

Просто мысли вслух, никогда не знаешь, поможет ли это. Ваше здоровье

person Sam Vanhoutte    schedule 12.04.2013
comment
Это BizTalk 2006, использующий .NET 2.0, поэтому проблем с GAC 4.0 нет. - person Michael; 12.04.2013
comment
Извините, тогда, кажется, что-то еще. Одна вещь, которую я помню из прошлого, заключалась в том, что где-то в системной папке были файлы (например, скрытый GAC), которые содержали старые версии dll от меня, и они использовались вместо настоящих GAC. Это, вероятно, ничего, но, возможно, сделайте dir /s на вашем c-диске, чтобы найти ваши dll и посмотреть, есть ли у вас элементы, которых там не должно быть. - person Sam Vanhoutte; 12.04.2013

Изучив нашу автоматизацию и включив подробные журналы, я смог получить более четкое сообщение об ошибке:

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] DLL содержит схемы XSD (BizTalk), ее также необходимо развернуть в базе данных управления BizTalk.

Судя по всему, это нужно делать дополнительно к добавлению сборок в GAC. По этой причине добавление App1 сборок в мое приложение не удастся; хотя я добавил SharedApp сборки BizTalk в GAC, они также были необходимы в базе данных управления BizTalk.

Спасибо тем, кто обратил внимание на этот вопрос.

person Michael    schedule 16.04.2013