❤️ 关注 Furion 微信公众号有惊喜哦!
🫠 遇到问题了
Skip to main content
⭐️ 开通 VIP 服务仅需 499 元/年,尊享 365 天项目无忧23 立即开通23 ⭐️
特别赞助

2.12 GlobalUsing 使用

2.12.1 关于 GlobalUsing

.NET6/C#10 之后,微软新增了 GlobalUsings 机制,可以在项目的根目录下创建一个 GlobalUsings.cs 文件,把常用的 using 放置其中。

这样 GlobalUsings.cs 所在的项目 .cs 文件就无需重复 using 了,大大的提高开发效率,也让代码变的更加简洁。

2.12.2 必要配置

启用 GlobalUsings 机制需要以下两个步骤:

  1. 在你需要全局 using 的项目层根目录创建 GlobalUsings.cs 文件,如果多个项目层需要,则每个层都应该有一个 GlobalUsings.cs
  2. 编辑项目的 .csproj 文件,添加 <ImplicitUsings>enable</ImplicitUsings>,注意是在 <PropertyGroup> 中添加,通常和 <TargetFramework> 同父同级

2.12.3 基本使用

配置之后,现在就可以把常用的 using 放到 GlobalUsings.cs 中了,写法如下:

Furion 推荐的全局命名空间
global using Furion;
global using Furion.DatabaseAccessor;
global using Furion.DataEncryption;
global using Furion.DataValidation;
global using Furion.DependencyInjection;
global using Furion.DynamicApiController;
global using Furion.Extensions;
global using Furion.FriendlyException;
global using Furion.Logging;
global using Mapster;
global using Microsoft.AspNetCore.Authorization;
global using Microsoft.AspNetCore.Http;
global using Microsoft.AspNetCore.Mvc;
global using Microsoft.CodeAnalysis;
global using Microsoft.EntityFrameworkCore;
global using System.ComponentModel.DataAnnotations;

注意必须以 global 开头!

小知识

一般推荐把实体类的命名空间也放进去,因为仓储 IRepository<T> 使用的频率非常高。

另外推荐大家在 Visual Studio 中安装 CodeMaid 插件(注意 20192022 版本),自动清理解决方案所有无用的 using,结合 GlobalUsings.cs 非常棒!

个别情况

可能由于 Visual Studio 版本的问题,导致 GlobalUsings.cs 定义出错,这时候需要在 using 后面加 global::,如:

global using global::Furion;

接下来在代码中使用:

// 无需 using Furion 的命名空间了哦,清爽了不少

namespace Your.Application;

public class DefaultAppService : IDynamicApiController
{
private readonly IRepository<BoardCard> _boardCardRepository;
private readonly IRepository<BoardGroup> _boardGroupRepository;
private readonly IRepository<BoardCardAttachment> _boardCardAttachmentRepository;
private readonly IRepository<BoardCardUser> _boardCardUserRepository;
}

// ....

2.12.3.1 默认全局 using

实际上微软已经自动把一些常用的 using 在编译后的代码中自动补上了,路径在 项目/obj/Debug/net6.0/项目.GlobalUsings.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;

也就是以上的 using 无需写在你创建的 GlobalUsings.cs 中了,微软会在编译时自动合并。

2.12.4 .NET5 项目开启支持

默认情况下,.NET5 采用 C# 9.0 编译,而 GlobalUsing 是从 C# 10.0 开始,这时候只需要编辑项目的 .csproj 并添加 <LangVersion>10.0</LangVersion> 即可:

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<LangVersion>10.0</LangVersion>
<!-- 其他配置 -->
</PropertyGroup>

如需使用最新版可配置为 <LangVersion>latest</LangVersion>

2.12.5 反馈与建议

与我们交流

给 Furion 提 Issue