在多目标项目中找不到正确版本的 WebHostBuilderContext



我有一个最初以net472为目标的项目,现在必须转换为同时针对net472和net5.0。

在我添加了net5.0之后,就不可能构建这个项目了,因为无论哪里提到WebHostBuilderContext,它都使用net472包中的版本(Microsoft.AspNetCore.Hosting.Abstractions(,而不是net5.0中的新版本(Microsoft.AspNetCore.App.Ref(,导致类型不匹配(它们被认为是不同的类型(。

显然,自从netcore2.1以来,主机名称空间发生了很大的变化,我需要以某种方式指示IDE根据构建目标使用上述类的正确版本。

该项目中没有对Microsoft.AspNetCore.Hosting.Abstractions或Microsoft.AspNetCore.App.Ref的显式引用,它们是从其他依赖项中转换而来的,所以我找不到使用别名显式指向正确程序集的方法。当我使用预编译器指令时,它总是看到Microsoft.AspNetCore.Hosting.Abstractions,而不识别Microsoft.AspNetCore.App.Ref版本。

我该如何解决这个依赖地狱?

我强烈建议不要同时使用.NET framework 4.x和.NET(core(5.0的ASP.NET项目。这就是兼容性地狱和问问题。如果您在其他项目中需要来自Context的特定数据,请考虑构建一个抽象层(适配器或桥接模式(,并且只向其他模块提供(例如注入(与框架无关的接口。

最新更新