Skip to content

Instantly share code, notes, and snippets.

@ryanvgates
Last active January 7, 2020 23:41
Show Gist options
  • Save ryanvgates/786b402373ab158ade4181d1a6d11dae to your computer and use it in GitHub Desktop.
Save ryanvgates/786b402373ab158ade4181d1a6d11dae to your computer and use it in GitHub Desktop.
SSIS Load Dll without GAC
public ScriptMain()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
public Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Assembly assembly = null;
try
{
assembly = LoadAssembly(args, assembly);
}
catch (Exception exception)
{
Dts.Log(exception.ToString(), 0, new byte[0]);
throw;
}
Dts.Log("Exiting CurrentDomain_AssemblyResolve", 0, new byte[0]);
return assembly;
}
private Assembly LoadAssembly(ResolveEventArgs args, Assembly assembly)
{
Dts.Log(string.Format("Entering CurrentDomain_AssemblyResolve with args.Name [{0}]", args.Name), 0, new byte[0]);
String _Common_DLLs = Dts.Variables["User::DLLs_Path_Common"].Value.ToString();
var dllName = string.Format("{0}.dll", args.Name.Split(',')[0]);
Dts.Log("DLL Name is " + dllName, 0, new byte[0]);
var dllFilename = Path.Combine(_Common_DLLs, dllName);
if (File.Exists(dllFilename))
{
Dts.Log(string.Format("The file [{0}] was found and that assembly will be loaded.", dllFilename), 0, new byte[0]);
assembly = Assembly.LoadFile(dllFilename);
}
else
{
Dts.Log(string.Format("Couldn't find the file [{0}].", dllFilename), 0, new byte[0]);
}
return assembly;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment