多个框架时,可能会出现全局引用出错
例如一个项目的TargetFrameworks为:
<TargetFrameworks>net6.0;net5.0;netstandard2.1;net472;net40</TargetFrameworks>
可能会出现:
XXX.GlobalUsings.g.cs(2,1,2,29): error CS8773: 功能“全局 using 指令”在 C# 9.0 中不可用。请使用语言版本 10.0 或更高版本。
好的,先把语言升级
<LangVersion>10.0</LangVersion>
又出错了
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS0234 命名空间“System.Net”中不存在类型或命名空间名“Http”(是否缺少程序集引用?)
可是程序没有引用System.Net命名空间啊,查找
看到obj下有个文件XXX.GlobalUsings.g.cs
// <auto-generated/> global using global::System; global using global::System.Collections.Generic; global using global::System.IO; global using global::System.Linq; global using global::System.Net.Http; global using global::System.Threading; global using global::System.Threading.Tasks;
怎么删除都不管用,人家说的好好的: auto-generated
好吧,怎么把这个干掉
还是项目的csproj里面
<ImplicitUsings>disable</ImplicitUsings>
重新编译,成功。
完整的csproj文件:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net6.0;net5.0;netstandard2.1;net472;net40</TargetFrameworks> <LangVersion>10.0</LangVersion> <ImplicitUsings>disable</ImplicitUsings> <Nullable>enable</Nullable> <AllowUnsafeBlocks>True</AllowUnsafeBlocks> <PlatformTarget>x86</PlatformTarget> </PropertyGroup> </Project>