.NET Core基础

一、环境搭建:安装.NET Core SDK和运行时

1. 安装必要工具

.NET Core是微软开发的免费开源跨平台计算机软件框架,支持Windows、Linux和macOS操作系统。要开始开发,你需要安装以下工具:

  • .NET Core SDK :包含编译、运行和调试.NET Core应用所需的所有工具
  • 运行时(Runtime)用于运行已编译的.NET Core应用(SDK已包含运行时)
    .NET Core是由微软开发的免费开源跨平台计算机软件框架,支持Windows、Linux和macOS操作系统

2. 版本选择与对比

表格

|---------------|---------|---------|---------------------------|
| 版本 | 发布日期 | 支持截止 | 主要特性 |
| .NET Core 3.1 | 2019-12 | 2022-12 | LTS版本,支持Windows Forms/WPF |
| .NET 5 | 2020-11 | 2022-05 | 统一.NET平台,性能改进 |
| .NET 6 | 2021-11 | 2024-11 | LTS版本,热重载,最小API |
| .NET 7 | 2022-11 | 2023-05 | 性能优化,容器改进 |

微软于2022年12月13日终止.NET Core 3.1版本的技术维护

3. 安装步骤

  1. 访问 .NET下载页面
  2. 选择适合你操作系统的安装包
  3. 运行安装程序

4. 验证安装

安装完成后,打开命令行工具,运行以下命令验证安装: bash

复制代码
dotnet --version

你应该能看到安装的.NET版本号,例如: text

复制代码
6.0.100

安装完成后,打开命令行工具,运行以下命令验证安装:dotnet --version

二、项目结构:了解项目文件(*.csproj)、命名空间

1. 创建第一个项目

使用以下命令创建一个新的Web应用: bash

复制代码
dotnet new webapp -o FirstWebApp
cd FirstWebApp

这个命令会创建一个基本的Razor Pages Web应用程序模板

2. 项目结构解析

生成的项目结构如下: text

复制代码
FirstWebApp/
├── Pages/            # Razor页面存放目录
├── wwwroot/          # 静态文件目录(CSS, JS, 图片等)
├── appsettings.json  # 应用配置
├── Program.cs        # 应用入口
└── Startup.cs        # 启动配置(.NET 5及以下)

各项目类型对比:Web应用(webapp)、MVC应用(mvc)、Web API(webapi)、控制台应用(console)、类库(classlib)

3. *.csproj项目文件详解

项目文件(*.csproj)是MSBuild项目文件,用于定义项目配置。以下是一个典型项目文件的结构: xml

复制代码
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.0" />
  </ItemGroup>
</Project>
  • Sdk:指定项目类型
  • TargetFramework:指定目标框架
  • PropertyGroup:定义项目属性
  • ItemGroup:定义项目项,如包引用
    元素具有以下结构: `

4. 命名空间详解

命名空间是C#中组织代码的机制,用于避免命名冲突: csharp

cs 复制代码
// Program.cs
namespace FirstWebApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}
  • 命名空间定义了代码的组织层次
  • 通常与项目文件夹结构对应
  • 有助于代码的模块化和可维护性

三、依赖管理:使用NuGet包管理器

1. NuGet介绍

NuGet是.NET的开源包管理器,它随Visual Studio一起发布,并深度集成到dotnet命令行界面中。截至目前,NuGet拥有超过60,000个包,下载量超过13亿次。
NuGet是.NET的开源包管理器,它随Visual Studio一起发布,并深度集成到dotnet命令行界面中。截至目前,NuGet拥有超过60,000个包,下载量超过13亿次

2. 添加依赖项的两种方式

方法一:编辑项目文件

在 中添加 元素: xml

cs 复制代码
<ItemGroup>
  <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
  <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.0" />
</ItemGroup>

若要添加依赖项,请在元素中添加项 。可以添加到现有 ,也可以新建一个元素。

**方法二:使用命令行界面(CLI)**bash
cs 复制代码
# 添加依赖项
dotnet add package Microsoft.EntityFrameworkCore

# 删除依赖项
dotnet remove package Microsoft.EntityFrameworkCore

若要添加依赖项,请运行 dotnet package add 命令...(如果使用的是.NET 9或更高版本的SDK版本,请改用 dotnet add package 窗体)

3. 依赖项版本管理

NuGet版本规则:

  • Version="6.0.0":精确版本
  • Version="6.0.0-*":6.0.0及更高版本
  • Version="[6.0.0, 7.0.0)":6.0.0到7.0.0之间的版本
    该 Version 属性指定要获取的版本。根据 NuGet 版本规则指定版本。

4. 依赖项的作用域****xml

cs 复制代码
<PackageReference Include="PACKAGE_ID" Version="PACKAGE_VERSION" Condition="'$(TargetFramework)' == 'netcoreapp2.1'" />
  • 仅当针对该目标的构建发生时,依赖项才有效
  • $(TargetFramework)是MSBuild属性
    使用条件添加仅在特定目标中可用的依赖项

四、核心概念:依赖注入(DI)、配置系统

1. 依赖注入(DI)详解

1.1 什么是依赖注入

依赖注入是ASP.NET Core支持的软件设计模式,它是一种在类及其依赖关系之间实现控制反转(IoC)的技术。
ASP.NET Core支持依赖关系注入(DI)软件设计模式,这是一种在类及其依赖关系之间实现控制反转(IoC)的技术。

1.2 为什么需要依赖注入

避免直接创建依赖对象,解决以下问题:

  • 用不同实现替换依赖项需要修改类
  • 依赖项有依赖时需要手动配置
  • 大型项目中配置分散
1.3 依赖注入的实现

步骤1:定义接口和实现 csharp

cs 复制代码
// IMyDependency.cs
public interface IMyDependency
{
    void WriteMessage(string message);
}

// MyDependency.cs
public class MyDependency : IMyDependency
{
    public void WriteMessage(string message)
    {
        Console.WriteLine($"Message: {message}");
    }
}

步骤2:在Program.cs中注册服务 csharp

cs 复制代码
var builder = WebApplication.CreateBuilder(args);

// 注册服务(使用Scoped生存期)
builder.Services.AddScoped<IMyDependency, MyDependency>();

var app = builder.Build();

示例应用使用具体类型 IMyDependency 注册 MyDependency 服务。AddScoped 方法使用范围内生存期(单个请求的生存期)注册服务。
步骤3:在组件中使用依赖 csharp

cs 复制代码
// Index.cshtml.cs
public class IndexModel : PageModel
{
    private readonly IMyDependency _myDependency;
    
    public IndexModel(IMyDependency myDependency)
    {
        _myDependency = myDependency;
    }
    
    public void OnGet()
    {
        _myDependency.WriteMessage("Hello from DI!");
    }
}
1.4 服务生存期

表格

|-----------|-----------------|----------|
| 生存期 | 说明 | 适用场景 |
| Transient | 每次请求创建新实例 | 无状态服务 |
| Scoped | 每个请求创建一个实例 | 与请求相关的状态 |
| Singleton | 应用程序生命周期内只有一个实例 | 全局配置、缓存 |

AddScoped 方法使用范围内生存期(单个请求的生存期)注册服务。

2. 配置系统详解

2.1 配置文件
cs 复制代码
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyAppDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

appsettings.json # 应用配置

2.2 在代码中使用配置****csharp
cs 复制代码
var builder = WebApplication.CreateBuilder(args);

// 获取配置
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
var loggingLevel = builder.Configuration["Logging:LogLevel:Default"];

// 在服务中使用
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(connectionString));
2.3 配置源

ASP.NET Core支持多种配置源:

  • appsettings.json
  • 环境变量
  • 命令行参数
  • Azure Key Vault
  • 本地机密管理器
    有关选项的依赖关系注入的详细信息,请参阅 ASP.NET Core 中的选项模式。
2.4 配置模型****csharp
cs 复制代码
public class AppSettings
{
    public string DefaultConnection { get; set; }
    public Logging Logging { get; set; }
}

public class Logging
{
    public string LogLevel { get; set; }
}

在依赖项注入术语中,服务:通常是向其他对象提供服务的对象,如 IMyDependency 服务。

五、总结

.NET Core基础包括:

  1. 环境搭建安装.NET Core SDK和运行时,验证安装
  2. 项目结构 :了解*.csproj项目文件、命名空间、项目目录结构
  3. 依赖管理 :使用NuGet包管理器添加和删除依赖项
  4. 核心概念
相关推荐
罗马苏丹默罕默德5 天前
Ubuntu下部署.NetCore WebApi的方法
数据库·ubuntu·.netcore
lingxiao168887 天前
WebApi详解+Unity注入--中篇:.net core的WebAPI
unity·c#·.netcore
老龄程序员7 天前
基于OpenIddict6.4.0搭建的授权UI管理界面
.netcore
武藤一雄8 天前
C# 关于多线程如何实现需要注意的问题(持续更新)
windows·后端·microsoft·c#·.net·.netcore·死锁
冰茶_8 天前
WPF路由事件:隧道与冒泡机制解析
学习·c#·.net·wpf·.netcore·mvvm
武藤一雄8 天前
C# 关于GC垃圾回收需要注意的问题(持续更新)
后端·微软·c#·.net·.netcore
武藤一雄8 天前
C# 关于应用程序域(AppDomain)需要注意的问题(持续更新)
后端·microsoft·微软·c#·.net·.netcore
csdn_aspnet13 天前
在 ASP.NET Core 中发布 RabbitMQ 消息
rabbitmq·.netcore
csdn_aspnet13 天前
在 ASP.NET Core 中使用(消费) RabbitMQ 消息
rabbitmq·.netcore