22

我已经阅读了很多对这个问题以前版本的回复,但似乎没有一个有效。

每次我在 Visual Studio 2015(v14.0.25431.01 更新 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

有没有其他人遇到过这个持续的问题,尽管已设置,但它仍然无法找到文件。

4

7 回答 7

8

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

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

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

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

重建解决方案。

于 2018-07-10T18:54:15.447 回答
3

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

于 2018-07-10T19:18:52.577 回答
1

尝试清理您的项目。

在 Visual Studio 中清理项目

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

于 2018-03-05T21:03:51.227 回答
0

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

于 2018-11-20T09:58:14.250 回答
0

最佳答案在这里:无法加载文件或程序集 '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;
    }
于 2020-05-19T16:49:09.283 回答
0

尝试复制NewtonSoft.Json到 SQL SSIS 运行时文件夹

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
于 2018-03-05T03:17:04.530 回答
0

将构建/发布或构建/调试中可用的 Newtonsoft.Json.dll 和 Newtonsoft.Json.xml 复制粘贴到部署的 ProjectFolder

于 2021-04-03T06:24:24.040 回答