Подтвердить что ты не робот

SSIS Script Компонент не может загрузить сборку до открытия вручную

Я создаю проект SSIS через Biml (используя текущую версию BimlExpress на страницу Varigence BimlExpress), которая использует компонент script в рамках задачи потока данных. Проект создается без проблем, однако ошибки, когда он попадает в script Component:

Не удалось загрузить файл или сборку "Microsoft.SqlServer.DTSPipelineWrap, Version = 14.100.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91" или одну из его зависимостей. Система не может найти указанный файл.

в ScriptMain.PreExecute()    в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute()

Я вижу эту DLL в GAC, и когда я пытаюсь добавить ссылку вручную, SSIS заявляет, что я не могу добавить ее, поскольку она уже включена в проект.

Однако, если я открою компонент script и вручную Build он - но ничего не изменит - задача потока данных будет работать без проблем.

Чтобы уточнить, я знаю, что я ничего не изменил, поскольку я воссоздаю этот проект из Biml каждый раз, когда хочу протестировать новый подход, который обеспечивает согласованную базовую линию.


Кто-нибудь знает, почему компонент script, который включает ссылку на dll GAC, будет работать только вручную Built, но не заранее?

Я использовал этот точный Biml без проблем, хотя и в другой среде. Работа с Visual Studio 2012 с экземпляром SQL Server 2016 еще не существует в Visual Studio 2015 (таргетинг на 2012 год) в отношении экземпляра SQL Server 2016.

Для дальнейшего контекста я также тестировал это вывод проекта SSIS, ориентированного на SQL Server 2012, 2014 и 2016 с тем же сообщением об ошибке.


Update

Вероятно, это проблема с версией dll в проекте как вывод из BimlExpress, поскольку если я вручную создаю папку v4.0_14.100.0.0__89845dcd8080cc91 с dll версии 13 внутри C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap, компонент script теперь выдает ошибку с помощью следующее:

System.InvalidCastException: невозможно передать объект COM типа "System.__ ComObject" в тип интерфейса "Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100". Эта операция завершилась неудачно, потому что вызов QueryInterface на COM-компоненте для интерфейса с идентификатором ID ID '{ID удален на всякий случай}' не удалось из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(исключение e)

в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute()

в Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(обертка IDTSManagedComponentWrapper100)

4b9b3361

Ответ 1

Я думаю, ваша проблема может быть связана с версией Express.

См. на соответствующей странице различия между версиями Express и BimlStudio (диаграмма сравнения функций в разделе "Сравнить с BimlStudio" ):

https://www.varigence.com/BimlExpress