Web 应用程序中的冲突 Newtonsoft.Json 6.0.0.0 和 12.0.0.0 与 Web Api,C#
Conflict Newtonsoft.Json 6.0.0.0 and 12.0.0.0 in Web Application with Web Api, C#
我在 Visual Studio 2019 年开始了一个新的 Web 应用程序。我添加了一个 Web Api。不久之后或同时(不记得了),我开始收到这样的警告:
Warning No way to resolve conflict between "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed". Choosing "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" arbitrarily.
我注意到了,但没有采取任何行动,因为我决定等到它给我带来问题。
那就是现在...
我正要使用一个 JSon 对象,但是在写这个时:
JObject jObject = JObject.Parse(result);
编译器给我这个错误:
Error CS0433 The type 'JObject' exists in both 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' and 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
我在网上搜索了一下,得出以下结论:
- 看起来 Microsoft.AspNet.WebApi.Client 是唯一安装的软件包,它依赖于 Newtonsoft.Json (>= 6.0.4)
- 我已经安装了Newtonsoft.Json (12.0.3)
- 在解决方案资源管理器中。在参考列表中,我只有 1 个参考。那是 12.0.3 的那个。
- 在 Web.Config 中我有这个条目(只有 Newtonsoft.Json 有这个条目)。
<dependentAssembly><assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/><bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/></dependentAssembly>
- 在我的 .csproj 中,我可以在 3 个不同的项目组中看到 3 个不同的引用:
- 一个用于 v.12.0.0.0
- 一个用于 v.12.0.2
- 还有一个用于 v.12.0.3
- 我试图卸载包 Newtonsoft.Json,但不允许,因为其他包依赖于此。
- 我在程序包管理器控制台中运行了这个命令:Update-Package Newtonsoft.Json,它告诉我没有可用的新更新。
现在,我的想法已经用完了。我卡住了。有人知道该怎么办吗?
****新更新****
我找到了 6.0.0.0。请看图:
在资源中,我双击了 Newtonsoft.Json 引用,在对象浏览器中我可以看到 6.0.0.0 和 12.0.0.0。
如您所见,6.0.0.0 和 12.0.0.0 都存在。 6.0.0.0 在我的 C:-drive 上的某处,在 SDK 中。
我已尝试删除该文件。我的项目搞砸了。然后我用我项目中的 12.0.0.0 替换了那个文件。这给了我装配不匹配的错误。
我终于把旧的.dll 复制回来了。又有点卡住了。
有什么想法吗?
问题通常来自两个不同的项目,它们使用同一库的不同版本。
然后这两个项目都被引用到另一个项目,警告有效地警告您可能会发生这样的事情。
转到解决方案并右键单击 - 管理 nuget 包。
转到合并选项卡。检查 newtonsoft 是否存在。如果是,请将相同的包安装到所有项目。
如果这不起作用,请检查您的项目是否添加了不是来自 nuget 的引用,并将它们也删除。
好的,我修好了。
我的 .csproj 文件中有 2 个引用 Newtonsoft.Json。一个指向包......\xxx.12.0.3,一个指向包......\xxx.12.0.2.
它们都在 6.0.0.0 以上,这是我得到的错误。所以我忽略了他们。
但实际上,在我的项目中我只有 12.0.3 文件夹而没有 12.0.2 文件夹。所以参考不起作用,VS试图找到另一个地方看。
我猜它环顾四周,可能使用 GAC,但最终它在一个 Azure SDK 中深入我的本地驱动器并找到 Newtonsoft.Json 6.0.0.0。这就是问题所在。
我从我的 .csproj 中删除了 12.0.2 引用,最终它起作用了。
我在 Visual Studio 2019 年开始了一个新的 Web 应用程序。我添加了一个 Web Api。不久之后或同时(不记得了),我开始收到这样的警告:
Warning No way to resolve conflict between "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed". Choosing "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" arbitrarily.
我注意到了,但没有采取任何行动,因为我决定等到它给我带来问题。
那就是现在...
我正要使用一个 JSon 对象,但是在写这个时:
JObject jObject = JObject.Parse(result);
编译器给我这个错误:
Error CS0433 The type 'JObject' exists in both 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' and 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
我在网上搜索了一下,得出以下结论:
- 看起来 Microsoft.AspNet.WebApi.Client 是唯一安装的软件包,它依赖于 Newtonsoft.Json (>= 6.0.4)
- 我已经安装了Newtonsoft.Json (12.0.3)
- 在解决方案资源管理器中。在参考列表中,我只有 1 个参考。那是 12.0.3 的那个。
- 在 Web.Config 中我有这个条目(只有 Newtonsoft.Json 有这个条目)。
<dependentAssembly><assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/><bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/></dependentAssembly>
- 在我的 .csproj 中,我可以在 3 个不同的项目组中看到 3 个不同的引用:
- 一个用于 v.12.0.0.0
- 一个用于 v.12.0.2
- 还有一个用于 v.12.0.3
- 我试图卸载包 Newtonsoft.Json,但不允许,因为其他包依赖于此。
- 我在程序包管理器控制台中运行了这个命令:Update-Package Newtonsoft.Json,它告诉我没有可用的新更新。
现在,我的想法已经用完了。我卡住了。有人知道该怎么办吗?
****新更新**** 我找到了 6.0.0.0。请看图:
在资源中,我双击了 Newtonsoft.Json 引用,在对象浏览器中我可以看到 6.0.0.0 和 12.0.0.0。
如您所见,6.0.0.0 和 12.0.0.0 都存在。 6.0.0.0 在我的 C:-drive 上的某处,在 SDK 中。
我已尝试删除该文件。我的项目搞砸了。然后我用我项目中的 12.0.0.0 替换了那个文件。这给了我装配不匹配的错误。
我终于把旧的.dll 复制回来了。又有点卡住了。
有什么想法吗?
问题通常来自两个不同的项目,它们使用同一库的不同版本。
然后这两个项目都被引用到另一个项目,警告有效地警告您可能会发生这样的事情。
转到解决方案并右键单击 - 管理 nuget 包。
转到合并选项卡。检查 newtonsoft 是否存在。如果是,请将相同的包安装到所有项目。
如果这不起作用,请检查您的项目是否添加了不是来自 nuget 的引用,并将它们也删除。
好的,我修好了。
我的 .csproj 文件中有 2 个引用 Newtonsoft.Json。一个指向包......\xxx.12.0.3,一个指向包......\xxx.12.0.2.
它们都在 6.0.0.0 以上,这是我得到的错误。所以我忽略了他们。
但实际上,在我的项目中我只有 12.0.3 文件夹而没有 12.0.2 文件夹。所以参考不起作用,VS试图找到另一个地方看。
我猜它环顾四周,可能使用 GAC,但最终它在一个 Azure SDK 中深入我的本地驱动器并找到 Newtonsoft.Json 6.0.0.0。这就是问题所在。
我从我的 .csproj 中删除了 12.0.2 引用,最终它起作用了。