多目标项目引用的目标框架解析行为

Target Framework Resolution Behavior for Multi-Target Project References

这个问题与这个问题几乎相同: 除了我不想做任何异国情调的事情,比如强制框架项目使用标准项目。

与那个问题类似,我有两个多目标项目,一个 class 库声明:

<TargetFrameworks>netstandard2.1;net48</TargetFrameworks>

和一个消费单元测试/控制台应用程序项目声明:

<TargetFrameworks>netcoreapp2.1;net48</TargetFrameworks>

第二个项目以通常的方式引用第一个项目:

<ProjectReference Include="..\MultiTargetProject\MultiTargetProject.csproj" />

当我构建解决方案时,GetReferenceNearestTargetFrameworkTask 生成以下警告:

NU1702 | ProjectReference 'C:\source\SolutionDir\MultiTargetProject\MultiTargetProject.csproj' was resolved using '.NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v2.1'. This project may not be fully compatible with your project.

现在,根据之前的问题,我看到显然有一种方法可以明确定义要解析的框架,并与一些条件 属性 组结合使用,我可以成功解析 Framework-to-框架和标准到核心。

我的问题是:

这是否有必要 - 我曾假设 .NET Core 项目会解析 .NET Standard 参考? GetReferenceNearestTargetFrameworkTask 的逻辑是什么? (我还没有找到任何关于行为应该是什么的明确文档。)

其实你不必把这个问题想得太复杂。事实是 net standard 2.1 不支持 net core 2.1.

参见this document

Net Standard 2.1 至少支持 Net Core 3.0.

你只需要将你的主工程targetframeworks改成netcoreapp3.1;net48或者你的lib工程的targetframeworks改成netstandard2.0;net48,警告就会消失