无法加载文件或程序集“Newtonsoft.Json”Version = 11.0.0.0

时间:2018-03-05 01:38:03

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

我已经阅读了很多对此问题的早期版本的回复,但似乎都没有。

每次在Visual Studio 2015(v14.0.25431.01 update 3)中打开脚本组件时,它都会告诉我我缺少对Newtonsoft.Json的引用。所以我进入NuGet包管理器,它要求我恢复我做的并说它成功完成。

然后我保存并尝试运行我的SSIS包并收到以下错误。

  

无法加载文件或程序集'Newtonsoft.Json,Version = 11.0.0.0,   Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个   依赖关系。系统找不到指定的文件。

我的packages.config文件看起来像这样。

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

我的app.config文件看起来像这样。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json"
                publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

我可以导航到它要查找的文件夹并查看.dll文件

  

C:\用户\ lp1.db \应用程序数据\本地\ TEMP \ VSTA \ SSIS_SC130 \ VstaGbmf__V5kCUWonnRT2qrG_g \包\ Newtonsoft.Json.11.0.1 \ lib中\ net45 \ Newtonsoft.Json.dll

有没有其他人遇到这个持续存在的问题,即使被设置,也无法找到该文件。

7 个答案:

答案 0 :(得分:5)

在所有项目中删除对Newtonsoft.Json的所有引用。

转到Nuget软件包管理器(右键单击解决方案),下载Newtonsoft.Json最新版本,并选择要使用的所有项目,然后重新安装。

确保packages.config具有最新版本:

<packages>
  <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
</packages>

重建解决方案。

答案 1 :(得分:2)

这是.NET项目中最常见的问题之一。基本上,有人直接引用了本地程序集,而不是通过NuGet管理程序包,或者使该项目可以在其他.NET版本中进行编译。 解决此问题的最佳方法是在项目引用中找到引用,将其删除,清理项目,检查DLL是否已消失,最后使用NuGet重新制作引用。

答案 2 :(得分:0)

尝试将NewtonSoft.Json复制到SQL SSIS Runtime文件夹

C:\Program Files (x86)\Microsoft SQL Server\[SQL Server version]\DTS\Binn

示例(SQL Server 2016)

C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn

答案 3 :(得分:0)

尝试清理您的项目。

Clean Project in Visual Studio

如果这不起作用,请删除引用下的引用。将dll文件保存在bin文件夹中,然后重新添加。浏览您的文件,选择它并单击确定。

答案 4 :(得分:0)

当我在同一个解决方案中有两个不同的项目时,我遇到了类似的问题,其中一个是指11.0.2版,另一个是指6.0.4版。如果是这种情况,请尝试为两者保持相同的版本,然后重试。

答案 5 :(得分:0)

最佳答案在这里:Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies

    public static void SetBindingRedirect()
    {
        AppDomain currentDomain = AppDomain.CurrentDomain;
        currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
    }

    private static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
    {
        if (args.Name.Contains("Newtonsoft.Json"))
        {
            string assemblyFileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Newtonsoft.Json.dll";
            return Assembly.LoadFrom(assemblyFileName);
        }
        else
            return null;
    }

答案 6 :(得分:0)

将构建/发布或构建/调试中可用的 Newtonsoft.Json.dll 和 Newtonsoft.Json.xml 复制粘贴到已部署的项目文件夹