无法加载文件或程序集“Newtonsoft.Json,版本=7.0.0.0
Could not load file or assembly 'Newtonsoft.Json, Version=7.0.0.0
我遇到以下错误
Could not load file or assembly 'Newtonsoft.Json, Version=7.0.0.0,
Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its
dependencies. The located assembly's manifest definition does not
match the assembly reference. (Exception from HRESULT: 0x80131040)
我可以在 Web.config
中看到以下内容
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
所以我改成
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.1.0" />
</dependentAssembly>
在 packeges.config 我可以看到下面的条目
但我仍然面临同样的问题。请帮忙
很多事情都可能出错,但此错误消息什么也没告诉您。
But still I am facing the same issue.
也许最简单的方法是尝试重新安装软件包。
转到 工具 > NuGet 包管理器 和 Select 包管理器控制台。执行以下两条命令:
uninstall-package newtonsoft.json -force
install-package newtonsoft.json
如果执行此操作后仍然出现错误,那么最终对我有用的是我从 .config 文件中删除了 Json.Net 的部分。如果它不存在,则重新安装会将其带回来,显然您需要将其删除。在包本身没有正常的解决方案之前,恐怕这个手动步骤是必须的。在包管理器控制台再次执行:
Update-Package –reinstall Newtonsoft.Json
另请查看解决方案中的 .Net version 个项目。
这是卸载项目的Microsoft solution。
大多数时候发生此错误是因为不同的程序集依赖于其他程序集的特定版本。
最简单的解决方法是使用 nuget 包管理器更新所有依赖于 Newtonsoft.Json 的包。
它将自动设置项目中的所有配置文件。
我遇到了同样的错误,并通过对我的解决方案执行 'Clean' 来修复它。我在 UWP 应用程序中使用 Newtonsoft.Json。
谢谢@ekostadinov。我能够使用@ekostadinov 的解决方案让它工作。在我的例子中,默认的 Web MVC 模板有 NewtonSoft JSON 版本 6。我添加了一个 class 库,并从 Nuget 包管理器安装了 NewtonSoft JSON 版本 9。
我尝试从我的 Web 项目、包配置和依赖项中删除引用,但我仍然遇到错误。现在,我收到错误消息说无法找到 Newtonsoft JSON 版本 6。最初我收到错误消息说无法找到 Newtonsoft JSON 版本 9.
然后我按照@ekostadinov 的步骤进行操作。
uninstall-package newtonsoft.json -force
install-package newtonsoft.json
我在包管理器控制台中收到有关依赖项的警告,其中提到了 Web.Grease dll 版本的依赖项。但无论如何,它是成功的。
只是为了仔细检查,我 运行 上面提到的最后一个命令 post
Update-Package –reinstall Newtonsoft.Json
它运行也没有任何警告。
现在,我可以在我的所有项目中使用版本 9。
如果 package.config 包含 2 个相同的软件包名称但版本不同,就会发生这种情况。
例如,
<package id="System.Spatial" version="5.6.2" targetFramework="net45" />
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />
谢谢。
我遇到了同样的问题,卸载并重新安装没有帮助。当时我正在尝试安装 Newtonsoft.Json 的最新版本 (10.0.3)。我最终安装了 7.0.1 版本,然后 运行 跨过另一篇建议将该 .dll 复制到 :\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE 的文章。我做到了。
再次开始安装 REST API 过程,然后收到不同的错误。尝试安装 Microsoft.Rest.ClientRuntime 2.3.2 时失败。为此,我刚刚进入 NuGet 并将其安装到我安装了 REST API 的项目中。
再次开始 REST API 安装,这次安装成功了。
哦,如果它能帮助任何人进行搜索,我正在 Windows Server 2012R2 上使用 VS2015 进行 Azure Immersion 02-API 应用教程。
我遇到了同样的问题。我遵循了 ekostadinov 的强制 uninstall/reinstall 步骤,但需要添加一个额外的步骤:
我正在将我的解决方案升级到 Framework 4.5.2。我的旧 Web.Config 文件在配置标记中有一个命名空间。
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
我更新到:
<configuration>
那么 bindingRedirect 应该适用于您使用的任何版本的 NewtonSoft:
<runtime xmlns="">
<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>
嗯,就我而言,解决方案中有多个项目,每个项目都使用不同版本的 NewtonSoft.json
。我不得不继续更改每个项目的 package.config
中的版本以匹配最新版本(好吧,它可以是任何版本,只是它在项目中应该相同)。一旦所有 package.config 指向同一个版本,我所要做的就是
Update-Package –reinstall Newtonsoft.Json
现在,请注意,我还必须手动更改其中一个项目中 web.config 程序集条目的版本。但这完成了工作。
我遇到了同样的问题,并且在尝试创建 MassTransit 队列时出现异常:
"Exception: System.TypeInitializationException: The type initializer for 'MassTransit.Serialization.JsonMessageSerializer' threw an exception. ---> System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)"
对我有用的解决方案(在花了几天时间恢复了几个提交之后):
- 我们有一个 windows 服务解决方案,其中包含 .Service 项目和
.XUnitTests 项目。他们俩都使用了一个共同的nuget
对 Newtonsoft.Json.dll 的依赖。没有明确提及
Newtonsoft.Json 两个项目中的 nuget 包(但我们使用的是
'using Newtonsoft.Json;' 命名空间在我们的 类 中),所以常见的
nuget 默认使用 Newtonsoft.Json 版本 9。
- 我在 .Service 和 .Service 中安装了 Newtonsoft.Json nuget
.XUnitTests 项目,常用的 nuget 包开始使用
最新的 v12 Newtonsoft 解决了我的问题。
如果它可以节省任何人的宝贵时间,请将其张贴在这里。
虽然为时已晚,但希望它对支持旧项目的人们有用。
添加 dependentAssembly 标签并在 oldVersion 中给出您遇到错误的版本号。
在我的例子中,它给出了版本 6.0.0 的错误
在 newVersion 中给出安装的版本值,如下所述:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
我遇到以下错误
Could not load file or assembly 'Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我可以在 Web.config
中看到以下内容 <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
所以我改成
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.1.0" />
</dependentAssembly>
在 packeges.config 我可以看到下面的条目
但我仍然面临同样的问题。请帮忙
很多事情都可能出错,但此错误消息什么也没告诉您。
But still I am facing the same issue.
也许最简单的方法是尝试重新安装软件包。
转到 工具 > NuGet 包管理器 和 Select 包管理器控制台。执行以下两条命令:
uninstall-package newtonsoft.json -force
install-package newtonsoft.json
如果执行此操作后仍然出现错误,那么最终对我有用的是我从 .config 文件中删除了 Json.Net 的部分。如果它不存在,则重新安装会将其带回来,显然您需要将其删除。在包本身没有正常的解决方案之前,恐怕这个手动步骤是必须的。在包管理器控制台再次执行:
Update-Package –reinstall Newtonsoft.Json
另请查看解决方案中的 .Net version 个项目。
这是卸载项目的Microsoft solution。
大多数时候发生此错误是因为不同的程序集依赖于其他程序集的特定版本。
最简单的解决方法是使用 nuget 包管理器更新所有依赖于 Newtonsoft.Json 的包。
它将自动设置项目中的所有配置文件。
我遇到了同样的错误,并通过对我的解决方案执行 'Clean' 来修复它。我在 UWP 应用程序中使用 Newtonsoft.Json。
谢谢@ekostadinov。我能够使用@ekostadinov 的解决方案让它工作。在我的例子中,默认的 Web MVC 模板有 NewtonSoft JSON 版本 6。我添加了一个 class 库,并从 Nuget 包管理器安装了 NewtonSoft JSON 版本 9。
我尝试从我的 Web 项目、包配置和依赖项中删除引用,但我仍然遇到错误。现在,我收到错误消息说无法找到 Newtonsoft JSON 版本 6。最初我收到错误消息说无法找到 Newtonsoft JSON 版本 9.
然后我按照@ekostadinov 的步骤进行操作。
uninstall-package newtonsoft.json -force
install-package newtonsoft.json
我在包管理器控制台中收到有关依赖项的警告,其中提到了 Web.Grease dll 版本的依赖项。但无论如何,它是成功的。
只是为了仔细检查,我 运行 上面提到的最后一个命令 post
Update-Package –reinstall Newtonsoft.Json
它运行也没有任何警告。
现在,我可以在我的所有项目中使用版本 9。
如果 package.config 包含 2 个相同的软件包名称但版本不同,就会发生这种情况。
例如,
<package id="System.Spatial" version="5.6.2" targetFramework="net45" />
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />
谢谢。
我遇到了同样的问题,卸载并重新安装没有帮助。当时我正在尝试安装 Newtonsoft.Json 的最新版本 (10.0.3)。我最终安装了 7.0.1 版本,然后 运行 跨过另一篇建议将该 .dll 复制到 :\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE 的文章。我做到了。
再次开始安装 REST API 过程,然后收到不同的错误。尝试安装 Microsoft.Rest.ClientRuntime 2.3.2 时失败。为此,我刚刚进入 NuGet 并将其安装到我安装了 REST API 的项目中。
再次开始 REST API 安装,这次安装成功了。
哦,如果它能帮助任何人进行搜索,我正在 Windows Server 2012R2 上使用 VS2015 进行 Azure Immersion 02-API 应用教程。
我遇到了同样的问题。我遵循了 ekostadinov 的强制 uninstall/reinstall 步骤,但需要添加一个额外的步骤:
我正在将我的解决方案升级到 Framework 4.5.2。我的旧 Web.Config 文件在配置标记中有一个命名空间。
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
我更新到:
<configuration>
那么 bindingRedirect 应该适用于您使用的任何版本的 NewtonSoft:
<runtime xmlns="">
<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>
嗯,就我而言,解决方案中有多个项目,每个项目都使用不同版本的 NewtonSoft.json
。我不得不继续更改每个项目的 package.config
中的版本以匹配最新版本(好吧,它可以是任何版本,只是它在项目中应该相同)。一旦所有 package.config 指向同一个版本,我所要做的就是
Update-Package –reinstall Newtonsoft.Json
现在,请注意,我还必须手动更改其中一个项目中 web.config 程序集条目的版本。但这完成了工作。
我遇到了同样的问题,并且在尝试创建 MassTransit 队列时出现异常:
"Exception: System.TypeInitializationException: The type initializer for 'MassTransit.Serialization.JsonMessageSerializer' threw an exception. ---> System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)"
对我有用的解决方案(在花了几天时间恢复了几个提交之后):
- 我们有一个 windows 服务解决方案,其中包含 .Service 项目和 .XUnitTests 项目。他们俩都使用了一个共同的nuget 对 Newtonsoft.Json.dll 的依赖。没有明确提及 Newtonsoft.Json 两个项目中的 nuget 包(但我们使用的是 'using Newtonsoft.Json;' 命名空间在我们的 类 中),所以常见的 nuget 默认使用 Newtonsoft.Json 版本 9。
- 我在 .Service 和 .Service 中安装了 Newtonsoft.Json nuget .XUnitTests 项目,常用的 nuget 包开始使用 最新的 v12 Newtonsoft 解决了我的问题。
如果它可以节省任何人的宝贵时间,请将其张贴在这里。
虽然为时已晚,但希望它对支持旧项目的人们有用。
添加 dependentAssembly 标签并在 oldVersion 中给出您遇到错误的版本号。 在我的例子中,它给出了版本 6.0.0 的错误 在 newVersion 中给出安装的版本值,如下所述:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>