一、环境搭建:安装.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. 安装步骤
- 访问 .NET下载页面
- 选择适合你操作系统的安装包
- 运行安装程序
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基础包括:
- 环境搭建 :安装.NET Core SDK和运行时,验证安装
- 项目结构 :了解*.csproj项目文件、命名空间、项目目录结构
- 依赖管理 :使用NuGet包管理器添加和删除依赖项
- 核心概念 :
- 依赖注入(DI):实现控制反转,提高代码可测试性和可维护性
- 配置系统:通过appsettings.json等配置文件管理应用设置
这些基础概念构成了.NET Core开发的基石,掌握它们对于后续学习ASP.NET Core、Entity Framework Core等高级框架至关重要。