【问题标题】:Load Multiple Assemblies Using Reflection in SSIS Script Task在 SSIS 脚本任务中使用反射加载多个程序集
【发布时间】:2019-08-29 14:52:36
【问题描述】:

我遇到了一种使用反射在脚本任务中加载程序集的解决方案...

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);

【问题讨论】:

    标签: c# visual-studio ssis sql-server-data-tools


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 2011-01-05
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      相关资源
      最近更新 更多