【问题标题】:SSIS Script Task Fails with NewtonSoft.JsonSSIS 脚本任务因 NewtonSoft.Json 而失败
【发布时间】:2021-01-27 03:47:55
【问题描述】:

我在SSIS 的脚本任务中嵌入了一个C# 代码,并且我安装了NewtonSoft.Json 用于一些json 处理。当我运行包时,出现以下错误:

无法加载文件或程序集“Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。系统找不到指定的文件。

尽管尝试了所有解决方案和建议(从 NuGet 管理器和控制台卸载并重新安装包,或手动添加引用等),但每当我运行 SSIS 包时,我仍然会遇到相同的错误并且脚本任务组件失败。

我正在使用 Visual Studio 2017 (SSDT)。

如何永久解决问题?

【问题讨论】:

    标签: c# ssis


    【解决方案1】:

    如果 GAC 不可用,您仍然可以使用 AssemblyResolve 指向自定义文件夹。

            static ScriptMain()
            {
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            }
    
            static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
            {
                string name = new System.Reflection.AssemblyName(args.Name).Name;
                string library_path = Environment.GetEnvironmentVariable("LIBRARY_PATH", EnvironmentVariableTarget.Process);
                string dll = (library_path + @"\" + name + ".dll").Replace(@"\\", @"\");
    
                if (File.Exists(dll))
                {
                    return System.Reflection.Assembly.LoadFile(dll);
                }
    
                return null;
            }
    

    【讨论】:

      【解决方案2】:

      使用 SSIS,您只能引用安装在 GAC 上的程序集。使用 Windows SDK 中的 gacutil 将所需的程序集安装到 GAC

      gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
      

      【讨论】:

        猜你喜欢
        • 2015-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        相关资源
        最近更新 更多