在 .NET 6/C# 10 之后,微软引入了 GlobalUsings 机制。这个机制允许你在项目根目录下创建一个 GlobalUsings.cs
文件,并在其中定义全局的 using
指令。这样一来,项目中的其他 .cs
文件就不需要再重复书写这些 using
指令,大大提高了开发效率,并使代码更加简洁。
启用 GlobalUsings 机制需要以下两个步骤:
创建 GlobalUsings.cs 文件:
在项目根目录创建一个名为 GlobalUsings.cs
的文件。如果多个项目层需要使用全局 using
,则每个层都应该有一个 GlobalUsings.cs
文件。
编辑项目的 .csproj 文件:
在 .csproj
文件的
中添加
,通常与
同级。
示例:
<PropertyGroup>
<TargetFramework>net6.0TargetFramework>
<ImplicitUsings>enableImplicitUsings>
PropertyGroup>
配置完成后,可以将常用的 using
语句放到 GlobalUsings.cs
文件中,写法如下
Furion 推荐的全局命名空间:
global using Furion; // 引入 Furion 核心命名空间
global using Furion.DatabaseAccessor; // 引入数据库访问器命名空间
global using Furion.DataEncryption; // 引入数据加密命名空间
global using Furion.DataValidation; // 引入数据验证命名空间
global using Furion.DependencyInjection; // 引入依赖注入命名空间
global using Furion.DynamicApiController; // 引入动态 API 控制器命名空间
global using Furion.Extensions; // 引入扩展方法命名空间
global using Furion.FriendlyException; // 引入友好异常处理命名空间
global using Furion.Logging; // 引入日志处理命名空间
global using Mapster; // 引入对象映射工具 Mapster 的命名空间
global using Microsoft.AspNetCore.Authorization; // 引入授权相关命名空间
global using Microsoft.AspNetCore.Http; // 引入 Http 上下文相关命名空间
global using Microsoft.AspNetCore.Mvc; // 引入 MVC 框架相关命名空间
global using Microsoft.CodeAnalysis; // 引入代码分析工具命名空间
global using Microsoft.EntityFrameworkCore; // 引入 Entity Framework Core 的命名空间
global using System.ComponentModel.DataAnnotations; // 引入数据注解命名空间
注意:全局 using
必须以 global
开头。
GlobalUsings.cs
中,因为仓储接口 IRepository
的使用频率非常高。using
,结合 GlobalUsings.cs
使用效果更佳。如果由于 Visual Studio 版本的问题,导致 GlobalUsings.cs
中的定义出错,可以在 using
后面加上 global::
,如:
global using global::Furion;
using
微软已经自动将一些常用的 using
在编译后的代码中补上。这些文件路径位于 项目/obj/Debug/net6.0/项目.GlobalUsings.cs
,内容如下:
//
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
中,微软会在编译时自动合并。
默认情况下,.NET 5 采用 C# 9.0 编译,而 GlobalUsing 是从 C# 10.0 开始支持的。要在 .NET 5 项目中使用 GlobalUsing 机制,只需要编辑项目的 .csproj
文件并添加
即可:
<PropertyGroup>
<TargetFramework>net5.0TargetFramework>
<LangVersion>10.0LangVersion>
PropertyGroup>
如需使用最新版,可以将
配置为 latest
。
JSON Schema 是一个用于验证 JSON 数据结构的强大工具。Schema 可以理解为模式或者规则,有了 JSON Schema,可以防止配置文件中出现错误或不符合预期的数据结构。
JSON Schema 的编写对于提供智能提示和校验功能非常有用。如果你想学习 JSON Schema 编写,可以参考以下文档:
另外,推荐一个便捷的在线工具,可以根据 JSON 文件内容自动生成 JSON Schema,并支持进一步的修改:
Furion 框架提供了完整的 Furion 和 ASP.NET Core 的 JSON Schema 文件。通过这些文件,可以在编写配置文件时获得完整的智能提示和校验支持。
使用 JSON Schema 的方式非常简单,只需要在 .json
文件的头部添加 $schema
字段,指向 Furion 提供的 JSON Schema 文件即可。例如:
{
"$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.EntityFrameworkCore": "Information",
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
}
},
"AllowedHosts": "*"
}
如果在添加了 $schema
字段后,依然无法进行智能提示和校验,可以尝试以下步骤:
默认情况下,JSON Schema 在第一次获取后会被自动缓存,这可能会导致 .json 文件的提示错误。要更新缓存,只需删除缓存文件即可。
%AppData%
。C:\Users\你的电脑用户名\AppData\Local\Microsoft\VisualStudio
路径。http/https
开头的缓存文件。%AppData%
。C:\Users\你的电脑用户名\AppData\Roaming\Code\User\globalStorage\vscode.json-language-features\json-schema-cache
路径。搭建私有 NuGet 服务器是为了在企业内部或团队之间管理和分发私有软件包。这些包可能包含了专有的代码库或敏感的组件,不适合公开发布到公共的 NuGet.org。可以使用 BaGet 来搭建私有 NuGet 服务器:
# 支持 .nupkg 和 .snupkg 包
dotnet nuget push -s http://localhost:5000/v3/index.json Furion.1.0.0.nupkg
通常情况下,我们通过 NuGet 在线平台(如 Visual Studio 内置的 NuGet 包管理器)安装依赖包,但有时我们不希望将包发布到公共平台,或者只想在本地使用或测试后再发布。
本地测试包的好处:
默认情况下,Furion 会根据 Furion.版本号-beta.Issue编号
规则生成 .nupkg
和 .snupkg
包。前者是不包含调试符号的 NuGet 包,后者则是带有调试符号的包(方便 IDE 调试)。例如:
D:\Furion_NuGet_Test_Packages
Furion.4.2.3-beta-I5MM3O.nupkg
Furion.4.2.3-beta-I5MM3O.snupkg
其中,I5MM3O
对应的是 Issue 的编号:Issue Link。
将生成的包放到本地磁盘的一个文件夹中,如 D:\Furion_NuGet_Test_Packages
。
在 Visual Studio 中,配置本地包路径以便项目可以引用这些包:
打开 NuGet 包管理器设置。
添加本地包源,指向 D:\Furion_NuGet_Test_Packages
。
如果不使用可视化 IDE 进行配置,可以通过以下命令行配置本地包源:
dotnet restore "YourProject.Web.Entry/YourProject.Web.Entry.csproj" -s "D:\Furion_NuGet_Test_Packages";
dotnet restore "YourProject.Web.Entry/YourProject.Web.Entry.csproj" -s "https://api.nuget.org/v3/index.json";
测试通过后,可以删除之前的配置,也可以继续使用本地包。
Furion 提供了 .snupkg
包,安装 Furion 时会自动下载到本地。如果需要启用源码调试,只需要启用以下配置:
Enable source server support
选项。Enable Just My Code
选项以进行调试。