如何更改 netstandard 2.0 库使用的 Newtonsoft.Json 的版本

How to change the version of Newtonsoft.Json used by netstandard 2.0 library

我创建了引用 Newtonsoft.Json 12.0.3 nuget 的 netstadard 2.0 class 库。当我构建库并通过 Assembly.GetReferencedAssemblies() 检查引用的程序集时,我看到我的库引用 Newtonsoft.Json 版本 12.0.0 而不是 12.0.3。

通过 dotnet publish 命令发布相同的库也会复制 Newtonsoft.Json 的 12.0.3 版本。

但是,如果我尝试使用 Assembly.Load() 从 .net core 3.1 应用程序动态加载该 netstandard 库,然后使用反射来访问我得到的类型信息无法加载 Newtonsoft.Json 版本 12.0.0 的异常。

如何强制我的 class 库引用 12.0.3 版本而不是 nuget 上什至不存在的 12.0.0?

Newtonsoft.Jsonreturns12.0.0.0 中的程序集版本。包版本和程序集版本并不直接绑定在一起,并且由于各种原因可能会有所不同。 (我有时会在增加包版本时忘记更新程序集版本。)

如果您查看回购中的 buildScripts.ps1,您可以看到 AssemblyVersion 在哪里专门设置为主要版本加上 0.0 当 AssemblyVersion 为空时 - 它是的,因为它没有在脚本的其他任何地方设置。

如果多个包引用了不同版本的Newtonsoft.Json,那么只需在您的项目中直接引用12.0.3 包即可。那时调用 Assembly.Load("Newtonsoft.Json") 应该加载你想要的版本。