GlobalUsing、JSON Schema、NuGet使用方法

news2024/9/22 19:43:45

一、速通一图流

在这里插入图片描述

二、GlobalUsing 使用

1. 关于 GlobalUsing

在 .NET 6/C# 10 之后,微软引入了 GlobalUsings 机制。这个机制允许你在项目根目录下创建一个 GlobalUsings.cs 文件,并在其中定义全局的 using 指令。这样一来,项目中的其他 .cs 文件就不需要再重复书写这些 using 指令,大大提高了开发效率,并使代码更加简洁。

2. 必要配置

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

  1. 创建 GlobalUsings.cs 文件
    在项目根目录创建一个名为 GlobalUsings.cs 的文件。如果多个项目层需要使用全局 using,则每个层都应该有一个 GlobalUsings.cs 文件。

  2. 编辑项目的 .csproj 文件
    .csproj 文件的 <PropertyGroup> 中添加 <ImplicitUsings>enable</ImplicitUsings>,通常与 <TargetFramework> 同级。

示例:

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
  <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

3. 基本使用

配置完成后,可以将常用的 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 开头。

4. 小知识

  • 推荐做法:建议将实体类的命名空间也放到 GlobalUsings.cs 中,因为仓储接口 IRepository<T> 的使用频率非常高。
  • CodeMaid 插件:建议在 Visual Studio 中安装 CodeMaid 插件(适用于 2019 和 2022 版本),自动清理解决方案中所有无用的 using,结合 GlobalUsings.cs 使用效果更佳。

5. 个别情况

如果由于 Visual Studio 版本的问题,导致 GlobalUsings.cs 中的定义出错,可以在 using 后面加上 global::,如:

global using global::Furion;

6. 默认全局 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 中,微软会在编译时自动合并。

7. .NET 5 项目开启支持

默认情况下,.NET 5 采用 C# 9.0 编译,而 GlobalUsing 是从 C# 10.0 开始支持的。要在 .NET 5 项目中使用 GlobalUsing 机制,只需要编辑项目的 .csproj 文件并添加 <LangVersion>10.0</LangVersion> 即可:

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

如需使用最新版,可以将 <LangVersion> 配置为 latest


三、 JSON Schema 使用

1. 关于 JSON Schema

JSON Schema 是一个用于验证 JSON 数据结构的强大工具。Schema 可以理解为模式或者规则,有了 JSON Schema,可以防止配置文件中出现错误或不符合预期的数据结构。

2. 学习 JSON Schema 编写

JSON Schema 的编写对于提供智能提示和校验功能非常有用。如果你想学习 JSON Schema 编写,可以参考以下文档:

  • JSON Schema 官方文档
  • 知乎文章:深入浅出 JSON Schema

另外,推荐一个便捷的在线工具,可以根据 JSON 文件内容自动生成 JSON Schema,并支持进一步的修改:

  • JSON Schema Visual Editor

3. Furion 框架提供

Furion 框架提供了完整的 Furion 和 ASP.NET Core 的 JSON Schema 文件。通过这些文件,可以在编写配置文件时获得完整的智能提示和校验支持。

4. 如何使用

使用 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": "*"
}

5. JSON Schema 失效解决

如果在添加了 $schema 字段后,依然无法进行智能提示和校验,可以尝试以下步骤:

  1. 关闭并重新打开 .json 文件:有时只需要重新加载文件即可解决问题。
  2. 重启 IDE
  • Visual Studio:关闭并重新打开 Visual Studio。
  • Visual Studio Code:重启 Visual Studio Code 即可。

6. 更新 JSON Schema 缓存

默认情况下,JSON Schema 在第一次获取后会被自动缓存,这可能会导致 .json 文件的提示错误。要更新缓存,只需删除缓存文件即可。

  1. Visual Studio
  • 打开运行窗口,输入 %AppData%
  • 进入 C:\Users\你的电脑用户名\AppData\Local\Microsoft\VisualStudio 路径。
  • 删除以 http/https 开头的缓存文件。
  1. Visual Studio Code
  • 打开运行窗口,输入 %AppData%
  • 进入 C:\Users\你的电脑用户名\AppData\Roaming\Code\User\globalStorage\vscode.json-language-features\json-schema-cache 路径。
  • 删除缓存文件。

三、NuGet 本地调试包

1. 私有 NuGet 平台搭建

搭建私有 NuGet 服务器是为了在企业内部或团队之间管理和分发私有软件包。这些包可能包含了专有的代码库或敏感的组件,不适合公开发布到公共的 NuGet.org。可以使用 BaGet 来搭建私有 NuGet 服务器:

  • BaGet 官方仓库
    搭建后,可通过下列脚本发布包:
# 支持 .nupkg 和 .snupkg 包
dotnet nuget push -s http://localhost:5000/v3/index.json Furion.1.0.0.nupkg

2. 关于本地测试包

通常情况下,我们通过 NuGet 在线平台(如 Visual Studio 内置的 NuGet 包管理器)安装依赖包,但有时我们不希望将包发布到公共平台,或者只想在本地使用或测试后再发布。
本地测试包的好处

  1. 可以有效保护公司核心代码。
  2. 方便开源项目测试。

3. 如何配置本地测试包

3.1 测试包命名规则

默认情况下,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。

3.2 配置本地包路径

将生成的包放到本地磁盘的一个文件夹中,如 D:\Furion_NuGet_Test_Packages

3.3 在 Visual Studio 中配置路径

在 Visual Studio 中,配置本地包路径以便项目可以引用这些包:

  1. 打开 NuGet 包管理器设置。

  2. 添加本地包源,指向 D:\Furion_NuGet_Test_Packages

3.4 通过命令行操作

如果不使用可视化 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";

3.5 选择测试版安装或更新

测试通过后,可以删除之前的配置,也可以继续使用本地包。

4. Visual Studio 调试 NuGet 包

Furion 提供了 .snupkg 包,安装 Furion 时会自动下载到本地。如果需要启用源码调试,只需要启用以下配置:

  1. 在 Visual Studio 中启用 Enable source server support 选项。
  2. 启用 Enable Just My Code 选项以进行调试。
    启用这些选项后,重新编译解决方案即可通过 F12 跳转到源代码并调试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公网、内网ip地址专用SSL证书

现在给网站安装SSL证书来实现网站的HTTPS安全访问已经成了大多数人的共识&#xff0c;但是有一些特殊情况&#xff1a;比如对于个别的应用IP地址不需要绑定域名&#xff0c;只是单纯用IP来访问网站&#xff0c;这种情况下&#xff0c;可以实现HTTPS访问吗&#xff1f; 先说答案…

通风天窗设计使用说明

通风天窗设计使用说明旨在为用户提供一套全面、详细的安装、使用、维护及安全指南&#xff0c;适用于各类工业厂房、仓库、体育馆等大型公共建筑顶部的自然通风系统。通风天窗通过有效利用风压和热压效应&#xff0c;促进室内空气流通降低室内温度&#xff0c;改善工作环境&…

【Python基础】基础语法

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、Python 基础语法2.1 编码格式2.2 标识符2.3 保留字2.4 注释2.5 行与缩进2.6 多行语句2.7 同一行显…

USB5834数据采集卡30路模拟量采集卡DAQ卡——阿尔泰科技

概述&#xff1a; 产品应用&#xff1a; AD模拟量输入功能&#xff1a; DI数字量输入功能&#xff1a; DO数字量输出功能&#xff1a; CNT定时/计数器功能&#xff1a; 其它指标&#xff1a; 板卡图片及尺寸&#xff1a;

等保需要的设备部署vs网络安全域划分原则

等保需要的安全设备和部署 技术要点–等保2级 技术要点–等保3级 安全产品/服务全景图 选型产品说明 安全区域边界配置 资产探测及漏洞检测配置 网络安全域划分原则 网络安全域 定义 网络安全域是一种网络划分方式&#xff0c;将具有相同安全需求、访问控制、相同信任级别、…

uva227 (我tm破防了!!!)

本人写了小十天就干这个&#xff08;我太菜了那个紫皮书出这么恶心的题本身代码逻辑并不难&#xff0c;我也写出来了但是就算有问题我ccccccccccccccc&#xff09; 首先说一下我不讲这个&#xff0c;因为我本身vs没有运行出来正确结果&#xff0c;在第二个输入中我输入的这个多…

极狐GitLab 如何管理 Kubernetes 集群?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

高效实用!mp4转mkv,视频格式转换技巧分享

mp4和mkv是两种常见的视频格式&#xff0c;它们之间有着明显的区别。简单来说&#xff0c;mp4是一种较为通用的视频格式&#xff0c;支持在多种设备和播放器上播放&#xff0c;文件大小适中&#xff0c;但可能不支持一些高级功能。而mkv则是一种更为灵活的格式&#xff0c;能够…

深度学习-批量与动量【Datawhale X 李宏毅苹果书 AI夏令营】

实际工程中使用批量和动量可以对抗鞍点或局部最小值。 批量&#xff1a; 在计算梯度的时候不会用所有数据计算损失。类比我们考试复习时&#xff0c;一个单元一个单元的知识点输入&#xff0c;所有单元都输入就是一整个轮回。而这一个单元用深度学习的术语来说就是批量&#x…

职升网:二级造价工程师的作用有很多!

一、专业知识与技能 二级造价工程师具备一定的专业知识和技能&#xff0c;能够独立完成工程项目的造价核算、合同管理和成本控制等工作。 二、重要角色 二级造价工程师在建设项目中扮演着重要的角色&#xff0c;能够提供专业的造价咨询和决策支持&#xff0c;为项目的顺利进…

华为OD机考一次没过,其他部门岗位机考考过且面试全部通过,因为有首次考试记录,无法有流程,有什么高招?

1.华为机考的规则其实前面的一文带你读懂华为OD已经和大家详细介绍了啥是OD了&#xff0c;我们在回顾一下整个应聘流程&#xff1a; 第一步投递简历&#xff08;要找靠谱的HR太重要了&#xff09; 这一阶段你要提供姓名、邮箱、手机号、身份证号码用于锁定&#xff0c;所以投递…

智慧未来,建筑自动控制系统助力

随着科学技术的不断发展&#xff0c;建筑自动控制系统已成为现代建筑不可或缺的一部分。该系统通过监控电气设备、空调设备、卫生设施&#xff0c;以及电梯、门禁和停车场的管理&#xff0c;完成了建筑物的信息管理和运行。控制系统和通信技术的应用为建筑自动控制系统的发展提…

豆包插件分享

前言 大家好&#xff0c;今天给大家分享一个国内版的ChatGPT&#xff0c;名字叫&#xff1a;豆包MarsCode 使用链接&#xff1a;点我开始学习 介绍&#xff1a; MarsCode 是豆包旗下的智能编程助手&#xff0c;提供以智能代码补全为代表的核心能力&#xff0c;支持主流编程…

Kubernetes部署并管理EFK Stack

Kubernetes Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化。 主要概念 Pod&#xff1a;在 Kubernetes 中创建和管理的、最小的可部署的计算单元。Service&#xff1a; Service 是 将运行在一个…

初赛试题:2022年CSP-J1

先言 本次试卷 一&#xff1a;单项选择题&#xff08;15题&#xff0c;每题2分&#xff0c;共30分&#xff09; 1. 【答案】A 【解析】 类、结构体相关的都是C的面对对象&#xff0c;例如struct,union,string,vector等STL标准库 2. 【答案】C 【解析】 ABCD全部模拟一遍…

azure-search-openai-demo-csharp does not deploy correctly to azure clooad

题意&#xff1a;“azure-search-openai-demo-csharp 无法正确部署到 Azure 云中” 问题背景&#xff1a; I want to try the sample, which Microsoft provided about the azure search. “我想尝试微软提供的关于 Azure 搜索的示例。”GitHub - Azure-Samples/azure-searc…

SpringBoot日常:MySQL数据库与达梦适配

文章目录 简介安装下载连接配置pom文件application.yml配置 代码适配注意事项1、创建表结构语法2、索引名唯一问题3、新增字段4、切换模式名5、工具客户端更新数据6、group by语法7、加解密函数替换8、删除符号9、separator分隔替换成LISTAGG函数10、函数now()替换成SYSDATE()1…

ADAS汽车芯片LPDDR4 SIPI联合仿真案列

目前LPDDRn/DDRn用于许多汽车应用,如高级驾驶员感知系 统(ADAS)、信息娱乐、自动驾驶汽车系统、平视显示器和仪表控制台等显示器,这些应用需要强大的处理器,需要带宽和内存容量来生成大量数据。这就需要电源和信号设计足够的健壮来适应不同的应用场景。上一篇文章中(LPDD…

冲压厂ERP常见功能是什么

在现代制造业中&#xff0c;特别是在冲压行业&#xff0c;高效的管理对于企业的竞争力至关重要。企业资源计划(ERP)系统作为一种集成化的管理工具&#xff0c;为冲压厂提供了诸多便利。本文将探讨冲压厂ERP系统的几个常见功能&#xff0c;并以万达宝ERP为例&#xff0c;分析其在…

紫光同创——PLL IP 的使用(Logos2)

本文档主要针对 Logos2 系列的 PLL 配置&#xff0c;至于 Logos 系列的 PLL&#xff0c;可以参考《PLLIP 的使用(Logos)》的文档。 一、PLL IP 介绍 1、PLL 基本配置模式 Basic Configurations PLL IP 是紫光同创基于 PLL 及时钟网络资源设计的 IP&#xff0c;通过不同的参数配…