【发布时间】:2020-05-12 19:35:23
【问题描述】:
我创建了引用 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.3 版本作为加载程序项目/构建的依赖项就足够了。
-
有没有办法删除这个看似毫无意义的重定向(为什么我仍然想要旧版本?)或者以某种方式将重定向信息传递给 Assembly.Load() 调用?
标签: c# json nuget .net-standard-2.0