From f9cf5681b52040ffbdb81fce0f8e8ed0087c7427 Mon Sep 17 00:00:00 2001 From: 15959855625 <2575863563@qq.com> Date: Sun, 26 May 2024 21:02:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...33\345\273\272\351\241\271\347\233\256.md" | 25 +++++++ ...1-\344\270\255\351\227\264\344\273\266.md" | 64 ++++++++++++++++++ ...35\350\265\226\346\263\250\345\205\245.md" | 15 +++++ ...50\345\205\245\344\273\243\347\240\201.md" | 67 +++++++++++++++++++ 4 files changed, 171 insertions(+) create mode 100644 "\351\202\271\347\246\217\347\247\221/20240520-\345\210\233\345\273\272\351\241\271\347\233\256.md" create mode 100644 "\351\202\271\347\246\217\347\247\221/20240521-\344\270\255\351\227\264\344\273\266.md" create mode 100644 "\351\202\271\347\246\217\347\247\221/20240523-\344\276\235\350\265\226\346\263\250\345\205\245.md" create mode 100644 "\351\202\271\347\246\217\347\247\221/20240524-\344\276\235\350\265\226\346\263\250\345\205\245\344\273\243\347\240\201.md" diff --git "a/\351\202\271\347\246\217\347\247\221/20240520-\345\210\233\345\273\272\351\241\271\347\233\256.md" "b/\351\202\271\347\246\217\347\247\221/20240520-\345\210\233\345\273\272\351\241\271\347\233\256.md" new file mode 100644 index 0000000..bda400f --- /dev/null +++ "b/\351\202\271\347\246\217\347\247\221/20240520-\345\210\233\345\273\272\351\241\271\347\233\256.md" @@ -0,0 +1,25 @@ +### 创建解决方案 +1. 首先,创建一个空白解决方案来放置类库项目。 解决方案用作一个或多个项目的容器。 将其他相关项目添加到同一个解决方案中。 +2. 启动 Visual Studio Code。 +3. 从主菜单中选择“文件”>“打开文件夹”(在 macOS 上为“打开...”) +4. 在“打开文件夹”对话框中,创建“ClassLibraryProjects”文件夹,然后单击“选择文件夹”(在 macOS 上为“打开”)。 +5. 在主菜单中选择“视图”>“终端”,从 Visual Studio Code 中打开“终端” 。“终端”在“ClassLibraryProjects”文件夹中连同命令提示符一起打开。 +6. 在“终端”中输入以下命令:**dotnet new sln** + +### 创建类库项目 +将名为“StringLibrary”的新 .NET 类库项目添加到解决方案 +1. 在终端中,运行以下命令创建库项目:**dotnet new classlib -o StringLibrary** +2. 运行以下命令,向解决方案添加库项目:**dotnet sln add StringLibrary/StringLibrary.csproj** +3. 运行以下命令以生成解决方案,并验证项目是否正确编译: + +### 向解决方案添加控制台应用 +添加使用类库的控制台应用程序。 +1. 在终端中,运行以下命令创建控制台应用项目:**dotnet new console -o ShowCase** +2. 运行以下命令,向解决方案添加控制台应用项目:**dotnet sln add ShowCase/ShowCase.csproj** + +### 添加项目引用 +最初,新的控制台应用项目无权访问类库。 若要允许该项目调用类库中的方法,可以创建对类库项目的项目引用。 +1. 运行下面的命令:**dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj** + +### 运行应用 +1. 在终端中运行以下命令:**dotnet run --project ShowCase/ShowCase.csproj** \ No newline at end of file diff --git "a/\351\202\271\347\246\217\347\247\221/20240521-\344\270\255\351\227\264\344\273\266.md" "b/\351\202\271\347\246\217\347\247\221/20240521-\344\270\255\351\227\264\344\273\266.md" new file mode 100644 index 0000000..1a3ac73 --- /dev/null +++ "b/\351\202\271\347\246\217\347\247\221/20240521-\344\270\255\351\227\264\344\273\266.md" @@ -0,0 +1,64 @@ +### 一、解决方案和项目之间的关系 + +1. 编译或打包解决方案时,会同时编译或打包其下所有项目 +2. 如果运行解决方案,会按编排的(指定的启动项目),分别编译该项目 +3. 在根目录下编译项目会一起编译解决方案,而在项目目录下编译却只会编译该项目 + +### 二、在项目中引用另一个项目 + +```js +dotnet add.\MyApi\ reference .\ApiDemo\ +// 在MyApi项目中引用ApiDemo项目 +// 则在MyApi.csproj文件中会出现以下代码 + + + +``` + +### 三、添加依赖包 + +```js +dotnet add .\MyApi\ package package_name +// 则在MyApi.csproj文件中会出现以下代码: + + +// 也可以根据MyApi.csproj文件还原包 +dotnet restore +``` + +### 四、编译一个简单的 api 请求 + +1. 编译代码 + +```js +// 在program.cs中 +// 使用了 MapGet 方法来指定了一个 GET 请求的路由路径为 "/api/users" +app.MapGet("/api/users",()=>{ + // 创建了一个 List 类型的列表对象,用于存储动态类型的元素 + var list = new List(); + list.Add(new{ + Id=1, + }); + list.Add(new{ + Id=2, + }); + return list; +}); +``` + +### 五、中间件 + +1. 添加中间件 + +```js +// 接受 HttpContext 对象 ctx 和一个 next 委托作为参数 +app.Use(async (ctx, next) => { + // 创建变量forecast,其中存储包含1到10的整数序列 + // Enumerable.Range 方法用于生成指定范围内的整数序列 + var forecast = Enumerable.Range(1, 10); + // 调用下一个中间件或终结点,使得控制权传递给下一个中间件或请求处理终结点 + await next(); + // 调用下一个中间件或终结点,使得控制权传递给下一个中间件或请求处理终结点 + ctx.Response.WriteAsync("C929星球"); +}); +``` \ No newline at end of file diff --git "a/\351\202\271\347\246\217\347\247\221/20240523-\344\276\235\350\265\226\346\263\250\345\205\245.md" "b/\351\202\271\347\246\217\347\247\221/20240523-\344\276\235\350\265\226\346\263\250\345\205\245.md" new file mode 100644 index 0000000..2f6ff12 --- /dev/null +++ "b/\351\202\271\347\246\217\347\247\221/20240523-\344\276\235\350\265\226\346\263\250\345\205\245.md" @@ -0,0 +1,15 @@ +### 依赖注入 +依赖注入是一种新的设计模式,通过正确使用依赖注入的相关技术,可以降低系统耦合度,增加系统的可扩展性。 + +### 实例的生命周期 +.NET Core DI 为我们提供的实例生命周其包括三种: +- Transient: 每一次GetService都会创建一个新的实例 +- Scoped: 在同一个Scope内只初始化一个实例 ,可以理解为( 每一个 request级别只创建一个实例,同一个http request会在一个 scope内) +- Singleton :整个应用程序生命周期以内只创建一个实例 +### 方法 +- `Main` 方法:这是应用程序的入口点。它调用 `CreateHostBuilder(args).Build().Run()` 来初始化和启动 Web 主机。 +- `CreateHostBuilder` 方法:配置 Web 主机构建器。它使用 `WebHost.CreateDefaultBuilder(args)` 创建默认的构建器,该构建器加载配置(如 `appsettings.json`)并设置日志记录等。然后,它调用 `.UseStartup()` 来指定应用程序启动时使用的启动类。 +- `Startup` 类:定义了 ASP.NET Core 应用程序的启动逻辑。 +- `ConfigureServices` 方法:在服务容器中注册应用程序所需的服务和依赖项。`services.AddControllers();` 添加了 MVC 控制器服务,这是 ASP.NET Core MVC 框架的核心部分。 +- `Configure` 方法:配置应用程序的请求处理管道。`app.UseRouting()` 启用路由中间件,它是处理请求 URL 并将其与应用程序中的路由匹配的关键组件。`app.UseEndpoints(endpoints => { endpoints.MapControllers(); })` 设置终结点路由中间件,它负责将请求映射到 MVC 控制器。 +- `MapControllers` 方法:一个扩展方法,它告诉终结点路由中间件如何将请求映射到应用程序中的控制器。 \ No newline at end of file diff --git "a/\351\202\271\347\246\217\347\247\221/20240524-\344\276\235\350\265\226\346\263\250\345\205\245\344\273\243\347\240\201.md" "b/\351\202\271\347\246\217\347\247\221/20240524-\344\276\235\350\265\226\346\263\250\345\205\245\344\273\243\347\240\201.md" new file mode 100644 index 0000000..9e8ed23 --- /dev/null +++ "b/\351\202\271\347\246\217\347\247\221/20240524-\344\276\235\350\265\226\346\263\250\345\205\245\344\273\243\347\240\201.md" @@ -0,0 +1,67 @@ +### 入口程序 Program.cs +```c# +using Microsoft.AspNetCore; + +namespace Admin2024.API; + +public class Program{ + // main 方法: 这是应用程序的入口点 + public static void Main(string []args){ + // 初始化和启动 Web 主机 + CreateWebHostBuilder(args).Build().Run(); + } + + // 配置Web主机构建器 + private static IWebHostBuilder CreateWebHostBuilder(string[] args) + { + // 创建默认的构建器 + return WebHost.CreateDefaultBuilder(args).UseStartup(); + } +} +``` + +### 启动类 Startup.cs +```c# + namespace Admin2024; +// Startup 类 : 定义了asp.net core 应用程序的启动逻辑 +public class Startup{ + /// + /// 在服务容器中注册应用程序所需的服务和依赖项(注册服务的中间件) + /// + /// + public void ConfigureServices(IServiceCollection services){ + // 添加了 MVC 控制器服务,这是 mvc 核心部分 + services.AddControllers(); + } + + /// + /// 配置应用程序的请求处理管道( 注册服务(依赖注入的服务) ) + /// + /// + public void Configure(IApplicationBuilder app){ + // 启动路由中间件 + app.UseRouting(); + // 设置终结点路由中间件,它负责将请求映射到 MVC 控制器 + // MapControllers() :一个扩展方法,它告诉终结点路由中间件如何将请求映射到应用程序中的控制器 + app.UseEndpoints(end=>end.MapControllers()); + } +} +``` + +### 控制器 +```c# +using Microsoft.AspNetCore.Mvc; +namespace Admin2024.API.Controllers +{ + [ApiController] + [Route("[controller]")] + public class BlogController : ControllerBase + { + [HttpGet] + public IActionResult index(){ + return Ok("神罗天怔!"); + } + } +} + +``` \ No newline at end of file -- Gitee