SSIS 脚本任务因 NewtonSoft.Json 而失败

时间:2021-01-26 17:21:30

标签: c# ssis

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

<块引用>

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

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

我使用的是 Visual Studio 2017 (SSDT)。

如何永久解决问题?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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;
        }