c# - 如何更改 netstandard 2.0 库使用的 Newtonsoft.Json 的版本
问题描述
我创建了引用 Newtonsoft.Json 12.0.3 nuget 的 netstadard 2.0 类库。当我构建库并通过Assembly.GetReferencedAssemblies()检查引用的程序集时,我看到我的库引用了 Newtonsoft.Json 版本 12.0.0 而不是 12.0.3。
通过dotnet publish命令发布相同的库也会复制 12.0.3 版本的 Newtonsoft.Json。
但是,如果我尝试使用Assembly.Load()从 .net core 3.1 应用程序动态加载该 netstandard 库,然后使用反射来访问类型信息,我会收到无法加载 Newtonsoft.Json 版本 12.0.0 的异常。
如何强制我的类库引用 12.0.3 版本而不是 nuget 上甚至不存在的 12.0.0?
解决方案
Newtonsoft.Json中的程序集版本按设计返回 12.0.0.0。包版本和程序集版本没有直接联系在一起,并且由于各种原因可能会有所不同。(当我增加我的包版本时,我有时会忘记更新程序集版本。)
如果您查看存储库中的buildScripts.ps1,您可以看到在 AssemblyVersion 为空时,AssemblyVersion 被专门设置为主要版本加上0.0 - 确实如此,因为它没有在脚本中的其他任何地方设置。
如果多个包引用不同版本的Newtonsoft.Json,则只需在项目中直接引用 12.0.3 包即可。此时调用Assembly.Load("Newtonsoft.Json")
应该加载您想要的版本。
推荐阅读
- c# - 具有多个 IDisposable 字段的类
- php - FPDF - PHP - 中心单元格上的不同样式
- sql - SQL 查询 - 不使用嵌套子查询
- php - Angular 2 无法加载预检响应无效(重定向)
- sql - MS Access - 更新单元格的值
- python - 如何从 django 中的数组中读取输入
- lambda - 使用 terraform 的自定义 API 网关授权器
- c++ - 如何使文本在饼图的每个切片中居中?
- javascript - selectize.js 在动态创建的选择元素上
- windows - 使用 pywin32 库中的 win32evtlog 写入 Windows 事件日志