SSIS C#脚本任务Newtonsoft.json参考不断给出错误“找不到引用的组件newtonsoft.json”

时间:2019-02-28 17:34:54

标签: c# visual-studio-2015 ssis json.net

这里有点沮丧。我试图在SSIS中的c#脚本任务中使用newtonsoft.json库。我打开解决方案,转到参考资料,并通过“管理NuGet软件包”进行安装。

当我安装它时,一切都很好,并且我可以开始编写代码,并且没有任何错误。但是,一旦我保存了解决方案并退出vs并返回到ssis,如果再次打开它,该引用现在就会显示一个警告图标,并说“找不到引用的组件'Newtonsoft.Json'”,我所有代码带红色下划线。

关于如何解决此问题的任何想法?

不确定是否值得注意,但是我没有下载/保存任何.dll文件或安装任何东西,而不仅仅是在“管理nuget包”控制台中

这是我的packages.config列出的内容:

<?xml version="1.0" encoding="utf-8"?>
   <packages>
   <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net45" />
   </packages>

也不确定这是否重要,但在packages.config中,第一个“ ”用蓝色下划线标出,并指出“未声明“ packages”元素。”

1 个答案:

答案 0 :(得分:0)

我以前做过这类问题。我所做的是从SSIS解决方案中的脚本任务内部手动导入了Newtonsoft.Json dll参考。

之后,您将需要在运行解决方案后将其dll注册到GAC(全局程序集缓存),以便能够正确加载或使用这些功能。

  public System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        if (args.Name.Contains("Newtonsoft.Json"))
        {
            string path = @"D:\Projects\FortiAnalyzer\FortiAnalyzer\FortiAnalyzer\bin\portable-net45+win8+wp8+wpa81\Newtonsoft.Json.dll";
            return System.Reflection.Assembly.LoadFile(@path);
        }
        return null;
    }

然后在您的Main中,您需要使用此代码在GAC中运行dll的加载

        //Register Reference 'Newtonsoft.Json' to GAC initially every run of this Script
        AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);