无法加载文件或程序集’Newtonsoft.Json,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed’或其中一个依赖项

我有一个以前在Windows 8.1上使用VS 2013构建的WinJS项目。

最近我通过创建一个空白的Javascript Universal Windows 10项目将该项目升级到Universal Windows 10,然后从旧项目添加了我的所有文件。

我有Windows运行时组件和SQLite的类库。

我添加了通用Windows运行时组件和通用类库,并将我的所有文件从旧项目复制到相应的位置。

不知何故,我设法删除所有构建错误。

我安装了所有必需的SQLite-net,SQLite for Universal Windows Platform,Newtonsoft等。

但是当我运行应用程序并在Windows运行时组件中调用Native方法时,它会产生一些奇怪的错误:

An exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.ni.dll but was not handled in user code.

Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.

在此处输入图像描述

Newtonsoft版本是:9.0.1

我的Windows运行时组件的project.json文件如下:

  { "dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0", "Newtonsoft.Json": "9.0.1" }, "frameworks": { "uap10.0": {} }, "runtimes": { "win10-arm": {}, "win10-arm-aot": {}, "win10-x86": {}, "win10-x86-aot": {}, "win10-x64": {}, "win10-x64-aot": {} } } 

我的Visual Studio版本是:

在此处输入图像描述

我尝试删除所有的Newtonsoft json并重新安装它,但没有运气。

我做了一个基本的演示并重现了这个问题。 似乎WinRT组件未能找到Newton.Json的正确程序集。 暂时解决方法是手动添加Newtonsoft.json.dll文件。 您可以通过以下步骤实现此目的:

  1. 右键单击引用 – >添加引用 – >浏览…->查找C:\ Users \ .nuget \ packages \ Newtonsoft.Json \ 9.0.1 \ lib \ portable-net45 + wp80 + win8 + wpa81 \ Newtonsoft.json。 dll->单击“添加”按钮。

  2. 重建Runtime Component项目并运行。 这个错误应该消失了。

我也遇到了同样的问题,要解决这个问题,请检查项目的引用 ,如果Newtonsoft.Json的版本已更新(可能没有),然后将其删除并检入您的Web.configApp.config element dependentAssembly已更新如下:

     

之后, 再次重建项目dll将替换为正确的版本)

我通过将Newtonsoft.Json添加到启动项目的NuGet来解决了这个问题。

前一段时间我在使用新的ASP.NET Core应用程序时遇到了类似的问题。 事实certificate,其中一个引用的库使用的Newtonsoft.Json版本低于9.0.0.0。 所以我升级了该库的版本,问题解决了。 不确定你是否能够在这里做同样的事情

我正在使用Visual Studio 2013 Update 2 。 就我而言,我在一个解决方案中有一个Web项目和一个Web Api项目和unit testing项目以及其他类库。

我花了几天时间来解决这个问题。 以下是我找到的逐步解决方案。

  1. 右键单击Web Api项目。 选择“ 设置为启动项目
  2. 右键单击Web Api项目。 转到属性 (Alt + Enter)。
  3. 在左侧菜单的“应用程序”选项卡上,选择“ 应用程序”
  4. 查找目标框架 。 将其更改为4.5.1并保存。 但是,它在“错误列表”窗口中显示错误。 重建后,没有错误。
  5. 通过使用Package Manager控制台中的以下查询从解决方案中删除所有Newtonsoft.Json包(以获取它View> Other Window> Package Manager Console )。

uninstall-package newtonsoft.json -force

  1. Package Manager Console 重新安装 Newtonsoft.Json

install-package newtonsoft.json

  1. 如果您有Visual Studio 2013的最新更新,则可能不会遇到此问题。 因为我正在使用Update 2,所以,在尝试安装Newtonsoft.Json ,我遇到了以下错误。

‘Newtonsoft.Json 10.0.3’软件包需要NuGet客户端版本’2.12’或更高版本,但当前的NuGet版本是’2.8.50313.46’

  1. 要解决此问题,我们需要更新程序包管理器控制台 。 得到了

工具>扩展和更新…>在左窗格中..选择更新> Visual Studio库

  1. 更新 NuGet包管理器扩展 。 按照之后的步骤进行操作。

  2. Visual Studio将在此之后重新启动

  3. 再次执行步骤6

安装完成后,将在下面的行中添加packages.config

   

安装完成后,web.config将添加以下行

     

如果没有其他错误,它将成功执行。

我的ASP.NET核心项目遇到了类似的问题。 会发生什么是bin / debug-folder中的.config文件是这样生成的:

       

如果我手动将第二个bindingRedirect更改为this,它可以工作:

  

不知道为什么会这样。

我正在使用Visual Studio 2015和.Net Core SDK 1.0.0-preview2-1-003177。

我们花了一天时间来解决这个问题。 解决方案是强制您的Web服务在您的web.config文件中使用版本11.0.0。

        

在我的情况下,当我更新牛顿版本VS自动修复我的web.config文件以指向新版本时,我的机器上的配置文件web.config出现了问题。 当我将其上传到生产时,现有的web.config指向旧版本。

一旦我更新了web.config,它就开始重新运行了。

      

能够通过更新我的版本的Newton.Json(旧版本= 9.0.0.0到新版本11.0.0.0)usign包管理器来解决我的asp.net mvc项目中的这个问题。

我认为AutoCAD劫持了我的。 对我有用的解决方案就是劫持它。 我从https://forums.autodesk.com/t5/navisworks-api/could-not-load-file-or-assembly-newtonsoft-json/td-p/7028055?profile.language=en – 得到了这个,是的,互联网以神秘的方式运作。

 // in your initilizer ... AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler); ..... private 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; }