在 SSIS 脚本任务中使用反射加载多个程序集



我遇到了一个使用反射在脚本任务中加载程序集的解决方案,例如这样......

static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.Contains("ssisHelper"))
{
string path = @"c:temp";
return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "ssisHelper.dll"));
}
else if (args.Name.Contains("xxx"))
{
string path = @"c:temp";
return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "xxx.dll"));

};    return null;

这很好用,但我的问题是只适用于一个程序集。 是否有加载多个程序集的解决方案?

我正在使用 Visual Studio 2015 的数据工具,并且正在尝试加载两个无法添加到 GAC 的 dll。 我使用的是 4.0 框架,但如果需要,我可以升级到 4.6.1。

编辑:以防万一需要提及,AssemblyResolve事件处理程序只能在程序启动时调用一次。 我打电话过来

appDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

我的问题是我在编辑中提到的:为每个丢失的程序集调用 AssemblyResolve 事件处理程序,而不是一次。如果正确编写了"IF"语句,则应加载缺少的程序集,包括引用其他程序集的程序集。一旦我的代码被纠正,它就工作正常。

最新更新