source script example destination component c# sql-server visual-studio ssis biml

c# - example - El componente de script de SSIS no puede cargar el ensamblaje hasta que se abra manualmente



script component source ssis example (1)

Estoy creando un proyecto SSIS a través de Biml (utilizando la versión actual de BimlExpress en la página Variety BimlExpress ) que usa un componente de script dentro de una tarea de flujo de datos. El proyecto se crea sin problemas, sin embargo, los errores cuando se llega al Componente de script:

No se pudo cargar el archivo o ensamblado ''Microsoft.SqlServer.DTSPipelineWrap, Version = 14.100.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

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

Puedo ver este archivo DLL dentro del GAC y cuando trato de agregar la referencia manualmente, SSIS indica que no puedo agregarlo porque ya está incluido en el proyecto.

Sin embargo, si abro el componente de script y lo Build manualmente, pero no cambio nada más, la tarea de flujo de datos se ejecutará sin problemas.

Para aclarar, sé que no he cambiado nada más, ya que estoy recreando este proyecto del Biml cada vez que quiero probar un nuevo enfoque, que proporciona una línea base consistente.

¿Alguien sabe por qué un Componente de Script que incluye una referencia a un dll de GAC, solo funcionará cuando se Built manualmente pero no de antemano?

He usado este Biml exacto antes sin problema, aunque en un entorno diferente. Trabajó con Visual Studio 2012 en una instancia de SQL Server 2016 pero no en Visual Studio 2015 (segmentación 2012) en una instancia de SQL Server 2016.

Para un contexto posterior, también he probado esto dando como resultado el proyecto SSIS dirigido a SQL Server 2012, 2014 y 2016 con exactamente el mismo mensaje de error.

Actualizar

Esto parece ser definitivamente un problema de versión dll en el proyecto como resultado de BimlExpress, en el sentido de que si creo manualmente la carpeta v4.0_14.100.0.0__89845dcd8080cc91 con la versión 13 dll dentro de C:/Windows/Microsoft.NET/assembly/GAC_MSIL/Microsoft.SqlServer.DTSPipelineWrap el componente de script ahora se equivoca con lo siguiente:

System.InvalidCastException: no se puede convertir el objeto COM del tipo ''System .__ ComObject'' al tipo de interfaz ''Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100''. Esta operación falló porque la llamada a QueryInterface en el componente COM para la interfaz con IID ''{ ID eliminado por si acaso }'' falló debido al siguiente error: No se admite dicha interfaz (Excepción de HRESULT: 0x80004002 (E_NOINTERFACE)).

en Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException (Exception e)

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

en Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute (contenedor IDTSManagedComponentWrapper100)


Supongo que su problema puede estar relacionado con la versión Express.

Consulte en la página relacionada las diferencias entre las versiones Express y BimlStudio (Cuadro comparativo de funciones en el botón "Comparar con BimlStudio"):

https://www.varigence.com/BimlExpress