【问题标题】:Target Framework Resolution Behavior for Multi-Target Project References多目标项目引用的目标框架解析行为
【发布时间】:2021-07-03 09:39:11
【问题描述】:

这个问题与这个问题几乎相同: Is There a Way to Force a Project Reference to .NET Standard Project to a Specific TargetFramework 除了我不想做任何奇特的事情,比如强制框架项目使用标准项目。

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

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

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

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

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

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

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

NU1702 | ProjectReference 'C:\source\SolutionDir\MultiTargetProject\MultiTargetProject.csproj' 是使用 '.NETFramework,Version=v4.8' 而不是项目目标框架 '.NETCoreApp,Version=v2.1' 解决的。此项目可能与您的项目不完全兼容。

现在,基于上一个问题,我看到有一种明确定义要解析哪个框架的方法,并结合一些条件属性组使用,我可以成功解析 Framework-to-Framework 和 Standard-to-核心。

我的问题是:

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

【问题讨论】:

    标签: .net visual-studio .net-core msbuild .net-standard


    【解决方案1】:

    事实上,您不必将这个问题复杂化太多。事实是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,警告就会消失。

    【讨论】:

    • 哇,太棒了。我只是试着想象一下主要与次要版本碰撞的“命名原则”背后的产品管理会议:“当然,开发人员会阅读文档!没有混淆的可能性,根本”:)看起来不错,一有机会验证我就会接受。
    • 好吧。这就是我想说的。我已经在我身边测试过它。和目标框架的兼容性有关。
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2021-12-07
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多