You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法将.NET Core 2.0项目引用添加到.NET Standard 2.0项目中?

解决.NET Standard 2.0项目无法引用.NET Core 2.0项目的问题

这个问题其实是.NET平台设计上的常见限制,我来帮你拆解原因和解决办法:

为什么会出现这个错误?

.NET Standard是一套通用的API规范,定位是让类库能在不同.NET运行时(比如.NET Core、.NET Framework、Xamarin等)上跨平台运行。而.NET Core是具体的运行时实现,属于应用程序项目(或依赖特定运行时的类库)。按照设计规则:

  • .NET Standard项目只能引用其他.NET Standard项目,或兼容它的更低版本.NET Standard库
  • 具体运行时项目(比如.NET Core、.NET Framework应用)可以引用.NET Standard项目

你现在尝试让通用规范的项目去依赖具体运行时的项目,违反了这个依赖方向,所以MSBuild抛出了你看到的错误:

"Severity Code Description Project File Line Suppression State Error Project '..' targets 'netcoreapp2.0'. It cannot be referenced by a project that targets '.NETStandard,Version=v2.0'. ..Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets 1601 "

解决办法

根据你的项目需求,可选择以下方案:

  • 调整目标框架(最直接)
    如果你的.NET Core 2.0项目本质是类库(不是控制台/ASP.NET Core应用),可以把它的目标框架改成netstandard2.0:

    1. 右键点击.NET Core项目 → 选择「属性」
    2. 在「应用程序」标签页,修改「目标框架」为.NET Standard 2.0
    3. 保存后重新生成,两个项目都遵循.NET Standard规范,就能互相引用了
  • 反转依赖关系(最符合设计原则)
    如果你的.NET Core 2.0项目必须保留netcoreapp2.0(比如它是应用程序,用到了.NET Core特有API),正确做法是让NET Core 2.0项目引用.NET Standard 2.0项目——通用类库提供基础功能,具体应用依赖类库,这才是合理的依赖流向。

  • 多目标框架(兼顾两种场景)
    如果你的.NET Core项目既要作为独立应用运行,又要给其他类库提供功能,可以设置它同时支持多个目标框架:

    1. 右键项目 → 选择「编辑项目文件」(.csproj)
    2. 把原来的<TargetFramework>netcoreapp2.0</TargetFramework>改成:
      <TargetFrameworks>netcoreapp2.0;netstandard2.0</TargetFrameworks>
      
    3. 保存后重新生成,.NET Standard 2.0项目就能引用它的.NET Standard版本,同时它还能作为.NET Core应用正常运行。

内容的提问来源于stack exchange,提问作者Trax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:37:42