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

C# 7.3全局using指令不可用编译错误求助

解决C# 7.3项目中"global using directive"编译错误

问题详情

已将解决方案内所有项目的GenerateGlobalUsings设置为false,但编译时仍触发错误:

Feature 'global using directive' is not available in C# 7.3. Please use language version 10.0 or greater.

启动项目的完整配置如下:

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

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net48</TargetFramework>
    <LangVersion>7.3</LangVersion>
    <GenerateGlobalUsings>false</GenerateGlobalUsings>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="MYOB.AccountRight.API.SDK" Version="2024.10.641" />
    <PackageReference Include="System.Security.AccessControl" Version="6.0.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\SBD.MyobSync\DataModule\DataModule.csproj" />
    <ProjectReference Include="..\SBD.MyobSync\SBD.MyobApi\MYOBAPI\SBD.Myob.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System.Configuration" />
  </ItemGroup>

  <ItemGroup>
    <None Update="appsettings.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="connections.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

已尝试的操作:

  • 清理并重建项目
  • 删除bin、obj文件夹
  • 重启Visual Studio 17.12.4
  • 删除生成文件内容

当前环境:.NET Framework 4.8(默认语言版本为7.3)

解决方案

1. 禁用隐式全局引用

项目配置中ImplicitUsings设为enable时,即便关闭GenerateGlobalUsings,仍会自动生成隐式全局using指令。将其修改为disable:

<ImplicitUsings>disable</ImplicitUsings>

2. 排查NuGet包的代码兼容性

部分高版本NuGet包(如MYOB.AccountRight.API.SDK 2024.10.641或System.Security.AccessControl 6.0.1)可能包含使用C# 10+特性的代码,比如global using。可尝试:

  • 查看NuGet包的内容,确认是否存在带global using的.cs文件
  • 降级NuGet包至兼容C# 7.3的版本
  • 若必须使用当前版本,可在项目配置中强制覆盖语言版本(部分包可能不兼容,需测试)

3. 检查所有依赖项目的配置

确认解决方案内所有依赖项目的:

  • LangVersion是否统一设置为7.3
  • ImplicitUsings是否已设为disable
  • GenerateGlobalUsings是否为false
    部分项目可能继承了解决方案级配置,需逐个检查.csproj文件。

4. 手动搜索并移除代码中的全局using

在整个解决方案中搜索global using关键字,找到手动添加的全局引用语句,替换为普通using指令或直接删除。

5. 确认Visual Studio默认语言版本设置

打开Visual Studio选项:工具 → 选项 → 项目和解决方案 → .NET Framework项目 → 常规,确认默认语言版本为7.3,避免配置继承时出现版本不一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:52:44