Saltar al contenido

SSIS Script Task no puede encontrar una referencia al ensamblado

Solución:

Para que los ensamblados personalizados sean referenciados y ejecutados en Script Task, debe agregarlos a GAC. Aquí hay un artículo con flujo de trabajo.
Enfoque alternativo: proporcione su propio AssemblyResolver en el código de tarea Script.

A continuación, se muestra un ejemplo del enfoque AssemblyResolver personalizado, mencionado por Ferdipux. La solución dada no funcionaba con variables de usuario, por lo que tendría que lidiar con los comentarios en la documentación para encontrar un enfoque “no estático”. Además, las soluciones publicadas ya no funcionarían cuando se implementa en una instancia de SQL Server 2017 e intenta leer los ensamblados desde un recurso compartido de red (System.NotSupportedException). Por lo tanto, reemplacé LoadFile (ruta) con la llamada UnsafeLoadFrom (ruta) como solución. Úselo solo para sus propios ensamblados o para otros ensamblados conocidos, no para ensamblajes descargados de autores desconocidos, ya que esto sería un problema de seguridad.

Aquí está el código de trabajo, la DLL a la que se hace referencia es “System.Web.Helpers.dll” y la ruta del recurso compartido de red se configura en la variable de usuario “LibPath” (VS 2015, SQL Server 2017):

    public System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    string path = Variables.LibPath.ToString();

    if (args.Name.Contains("System.Web.Helpers"))
    {
        return System.Reflection.Assembly.UnsafeLoadFrom(System.IO.Path.Combine(path, "System.Web.Helpers.dll"));
    }

    return null;
}

/// <summary>
/// This method is called once, before rows begin to be processed in the data flow.
/// </summary>
public override void PreExecute()
{
    base.PreExecute();

    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *