多目标项目引用的目标框架解析行为
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
.
Net Standard 2.1 至少支持 Net Core 3.0.
你只需要将你的主工程targetframeworks
改成netcoreapp3.1;net48
或者你的lib工程的targetframeworks
改成netstandard2.0;net48
,警告就会消失
这个问题与这个问题几乎相同:
与那个问题类似,我有两个多目标项目,一个 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
.
Net Standard 2.1 至少支持 Net Core 3.0.
你只需要将你的主工程targetframeworks
改成netcoreapp3.1;net48
或者你的lib工程的targetframeworks
改成netstandard2.0;net48
,警告就会消失