Visual Studio 未能加载文件或程序集“Newtonsoft.Json”版本=11.0.0.0

daolsyd0  于 2022-12-14  发布在  其他
关注(0)|答案(8)|浏览(736)

我已经阅读了很多对这个问题以前版本的回应,但似乎都不起作用。
每次我在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:\Users\lp1.db\AppData\Local\Temp\Vsta\SSIS_SC130\VstaGbmf__V5kCUWonnRT2qrG_g\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll
有没有其他人有这个持续的问题,它失去了找到文件的能力,尽管被设置。

dzhpxtsq

dzhpxtsq1#

删除所有项目中对Newtonsoft.Json的所有引用。
转到Nuget软件包管理器(右键单击解决方案),下载Newtonsoft.Json最新版本并选择所有要使用它的项目,然后重新安装它。
确保packages.config具有最新版本:

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

重新生成解决方案。

7cjasjjr

7cjasjjr2#

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

d4so4syb

d4so4syb3#

尝试清理项目。
Clean Project in Visual Studio
如果这样做不起作用,请删除references下面的reference。将dll文件保存到bin文件夹中,然后重新添加。浏览您的文件,选择它并单击ok。

9fkzdhlc

9fkzdhlc4#

尝试将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
qqrboqgw

qqrboqgw5#

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

h43kikqp

h43kikqp6#

最好的答案就在这里:未能加载文件或程序集'Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed'或它的某一个依赖项

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;
    }
hpxqektj

hpxqektj7#

复制并粘贴版本/发布或版本/调试中可用的Newtonsoft.Json.dll和Newtonsoft.Json.xml到已部署的ProjectFolder

roqulrg3

roqulrg38#

我强制卸载了newtonsoft.json的13版本(你必须进入插件的NuGet窗口中的设置)。然后我得到了大量的错误,只是重新安装了一次。所有的错误都消失了,我重新运行了程序,这一次它通过了版本错误。

相关问题