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

问题描述 投票:0回答:1

我创建了引用Newtonsoft.Json 12.0.3 nuget的netstadard 2.0类库。当我构建该库并通过 Assembly.GetReferencedAssemblies() 我看到我的库引用了Newtonsoft.Json的12.0.0版本,而不是12.0.3。

将同一个库通过 点网发布 命令也复制了12.0.3版本的Newtonsoft.Json。

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

我如何强制我的类库引用12.0.3版本,而不是12.0.0,因为12.0.0在nuget上根本不存在。

c# json nuget .net-standard-2.0
1个回答
2
投票

汇编版本在 Newtonsoft.Json 返回12.0.0.0的设计。 软件包版本和汇编版本并不直接联系在一起,而且由于各种原因可能会有所不同。 (我有时会在递增软件包版本时忘记更新汇编版本)。

如果你看一下 buildScripts.ps1 在repo中,你可以看到AssemblyVersion被特别设置为主要版本加上 0.0 当AssemblyVersion为空的时候--实际上是空的,因为在脚本中没有其他地方设置。

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

© www.soinside.com 2019 - 2024. All rights reserved.