簡體   English   中英

無法加載文件或程序集“Newtonsoft.Json”版本=11.0.0.0

[英]Could not load file or assembly 'Newtonsoft.Json' Version=11.0.0.0

我已經閱讀了很多對此問題以前版本的回復,但似乎沒有一個有效。

每次我在 Visual Studio 2015 (v14.0.25431.01 update 3) 中打開腳本組件時,它都會告訴我缺少對 Newtonsoft.Json 的引用。 所以我進入 NuGet 包管理器,它要求我恢復我所做的並說它成功完成。

然后我保存並嘗試運行我的 SSIS 包並收到以下錯誤。

無法加載文件或程序集“Newtonsoft.Json,版本=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

有沒有其他人有這個持續的問題,盡管設置了它卻失去了找到文件的能力。

刪除所有項目中對 Newtonsoft.Json 的所有引用。

進入 Nuget Package Manager(右鍵解決方案),下載 Newtonsoft.Json 最新版本,選擇所有項目使用,重新安裝。

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

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

重建解決方案。

這是 .NET 項目中最常見的問題之一。 基本上有人直接引用了本地程序集,而不是通過 NuGet 管理包,或者項目是在不同的 .NET 版本中編譯的。 解決此問題的最佳方法是在項目引用中找到引用,將其刪除,清理項目,檢查 DLL 是否已消失,最后使用 NuGet 重新創建引用。

嘗試將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

嘗試清理您的項目。

在 Visual Studio 中清理項目

如果這不起作用,請刪除引用下的引用。 將 dll 文件保存在您的 bin 文件夾中,然后再次添加它。 瀏覽您的文件,選擇它並單擊確定。

當我在同一個解決方案中有兩個不同的項目時,我遇到了類似的問題,其中一個是指版本 11.0.2,另一個是指版本 6.0.4。 如果是這種情況,請嘗試為它們保留相同的版本並重試。

最佳答案在這里: 無法加載文件或程序集“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;
    }

將構建/發布或構建/調試中可用的 Newtonsoft.Json.dll 和 Newtonsoft.Json.xml 復制粘貼到已部署的 ProjectFolder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM