gpt4 book ai didi

c# - Web 应用程序中的 Newtonsoft.Json 6.0.0.0 和 12.0.0.0 与 Web Api、C# 发生冲突

转载 作者:行者123 更新时间:2023-12-01 21:47:01 29 4
gpt4 key购买 nike

我在 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
    • 12.0.2 版
    • 还有一个用于 12.0.3 版
  • 我尝试卸载包 Newtonsoft.Json,但不允许,因为其他包依赖于此。
  • 我在程序包管理器控制台中运行了这个命令:Update-Package Newtonsoft.Json,它告诉我没有可用的新更新。

现在,我的想法已经用完了。我卡住了。有谁知道该怎么做吗?

****新更新****我找到了 6.0.0.0。请看图片:

Here in resources I double clicked the Newtonsoft.Json reference and in the object browser I can see both 6.0.0.0 and 12.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 复制回来了。又有点卡住了。

有什么想法吗?

最佳答案

好的,我修好了。

我的 .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 引用,最终它起作用了。

关于c# - Web 应用程序中的 Newtonsoft.Json 6.0.0.0 和 12.0.0.0 与 Web Api、C# 发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60295119/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com