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

.NET Standard 2.1中接口静态抽象成员报错CS8919求助

问题

在.NET Standard 2.1项目里尝试创建带静态抽象成员的接口,已经在项目文件中设置<LangVersion>11.0</LangVersion>启用C#11,但遇到报错:

CS8919 Target runtime doesn't support static abstract members in interfaces.

项目文件代码:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
    <LangVersion>11.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

C#代码:

public interface ITest
{
    static abstract int GetInt();
}

请问能不能通过安装NuGet包或者其他方式解决这个问题?

解决方案
  • 核心原因:接口的静态抽象成员是.NET 7及以上版本运行时才原生支持的特性,.NET Standard 2.1本身不包含该运行时层面的实现,仅设置C#语言版本不够——语言特性的正常工作依赖底层运行时的支持。

  • 解决办法:

    1. 升级目标框架(推荐):把项目的<TargetFramework>改成net7.0或更高版本(比如net8.0),这样能直接获得运行时对该特性的原生支持,不用额外配置。修改后的项目文件PropertyGroup部分如下:
      <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
        <LangVersion>11.0</LangVersion>
        <Nullable>enable</Nullable>
      </PropertyGroup>
      
    2. 兼容包临时方案(不推荐):如果必须保留.NET Standard 2.1,可以安装System.Runtime.CompilerServices.Unsafe和System.Linq.Expressions这类NuGet包,但这种方式只能在部分场景下绕过编译错误,运行时仍可能出现兼容性问题,无法保证所有场景正常工作,不适合长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:39:56