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'

我在网上搜索了一下,得出以下结论:

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

****新更新**** 我找到了 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 引用,最终它起作用了。