【发布时间】:2021-12-23 20:12:28
【问题描述】:
一个程序集(exe)依赖于一个nuget包(实际上是serilog.settings.configuration 3.1.0) 这个包依赖于 microsoft.extensions.options.configurationextensions (>=2.0.0) 又依赖于 microsoft.extensions.configuration.binder (>= 2.0.0) 这一切都很好。
但是,我在解决方案中有其他项目(类库)没有从 exe 项目中引用(将在运行时加载),其中一个依赖于较新版本的 microsoft.extensions.configuration.binder (6.0 .0) 一切都不好。 新版本无法加载,因为exe项目已经加载了旧版本。
我可以通过显式添加 microsoft.extensions.configuration.binder (6.0.0) 作为 exe 项目的依赖项来解决此问题,但我想有更好的方法可以做到这一点,是吗? (如果由于某种原因(例如用户选择)依赖于较新版本的动态加载的程序集未加载,我最终会在此过程中加载不必要的新程序集,在这种情况下可能不是大问题,但在其他情况下可能是)。
我正在使用 .Net 6,因此加载到单独的 AppDomain 是(afaik)不是一个选项
【问题讨论】:
标签: c# .net reflection configuration serilog