![](/img/trans.png)
[英]Newtonsoft.Json version 8.0.2 Could not load file or assembly Error
[英]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
當我在同一個解決方案中有兩個不同的項目時,我遇到了類似的問題,其中一個是指版本 11.0.2,另一個是指版本 6.0.4。 如果是這種情況,請嘗試為它們保留相同的版本並重試。
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.