来自 netstandard 2.0 的参考 .net461 程序集

Reference .net461 assembly from netstandard 2.0

根据 Microsoft("Reference .NET Framework libraries from .NET Standard") 我们可以从 .NetStandard 2.0 项目中引用 <= .NET 4.6.1 的完整框架库,以帮助迁移以 [=27 开头的现有代码=] 15.3

为什么下面的方法不起作用?

NetStandard/NetStandard.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\FullFramework\FullFramework.csproj" />
  </ItemGroup>
</Project>

FullFramework/FullFramework.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>
</Project>

出现以下错误:

  error NU1201: Project FullFramework is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). Project FullFramework supports: net461 (.NETFramework,Version=v4.6.1)
  error : Project '..\FullFramework\FullFramework.csproj' targets 'net461'. It cannot be referenced by a project that targets '.NETStandard,Version=v2.0'.

如果您引用使用 "old" .csproj 格式(目标 .NET 4.6.1 或更低版本)的项目,或者您直接引用库(.dll 文件),但对于未知 (对我来说)原因 - 如果您以 "new" 格式引用带有 .csproj 的项目(如您的问题),则不起作用。有人可能会争辩说,因为此功能的目标是使旧代码的移植更加容易 - 不支持新格式的项目在某种程度上是有道理的,我想这更多是一种疏忽而不是故意的。