跳转到主内容

搭建 SeatFlow 开发环境的完整指南,包括前置要求、构建、测试和运行

开发环境搭建

前置要求

工具 最低版本 说明
.NET SDK 10.0 dotnet.microsoft.com 下载
Git 版本控制
IDE 推荐 Rider、VS Code + C# 扩展、Visual Studio 2022+

支持的操作系统:

  • Windows 10+
  • macOS 12+(安装包暂未提供,需从源码构建)
  • Linux 任意发行版

克隆并构建

# 克隆仓库
git clone <repo-url>
cd SeatFlow

# 还原依赖
dotnet restore

# 构建全部 9 个项目
dotnet build

dotnet build 使用 SeatFlow.slnx 解决方案文件(新版 XML 格式),自动构建所有项目。

运行测试

# 运行所有测试
dotnet test

# 运行单个测试
dotnet test --filter "FullyQualifiedName~TestName"

测试技术栈

框架/库 用途
xUnit v3 测试框架 (Microsoft.Testing.Platform)
FluentAssertions 可读性断言
NSubstitute 对象模拟

测试项目(3 个):

  • SeatFlow.Core.Tests — Core 层单元测试
  • SeatFlow.Application.Tests — Application 层单元测试
  • SeatFlow.Infrastructure.Tests — Infrastructure 层单元测试

每个测试项目已启用 <ImplicitUsings>enable</ImplicitUsings>(自动引入 SystemSystem.Collections.GenericSystem.LinqSystem.Threading.Tasks)。项目特定的 global usings 在 Usings.cs(Application.Tests 中为 Using.cs)中定义。

运行桌面应用

dotnet run --project SeatFlow.Presentation.Avalonia

应用启动后将依次执行:

  1. StartupGuard.CheckEnvironment() 验证运行时版本和操作系统
  2. 加载语言设置和 XAML 资源
  3. 初始化 DI 容器,解析 MainWindow 和 ViewModel
  4. 恢复窗口位置和主题设置
  5. 进入用户界面

注意Avalonia DevTools (avdt) 仅在桌面环境中可用。在无头环境(如 CI)中构建时无需此工具。

IDE 推荐

VS Code

安装以下扩展:

  • C# Dev Kit (Microsoft)
  • .NET MAUI / Avalonia 扩展(可选)

JetBrains Rider

原生支持 .NET 10 和 Avalonia UI。推荐使用。

Visual Studio 2022+

需要安装 .NET 10 SDK 和 "使用 .NET 的桌面开发" 工作负载。Avalonia 扩展提供 AXAML 设计器和预览功能。

项目配置文件速查

文件 用途
SeatFlow.slnx 解决方案文件(新版 XML 格式)
dotnet-tools.json dotnet 本地工具清单(含 avdt)
scripts/publish.sh / publish.ps1 多平台发布脚本
scripts/clean.sh / clean.ps1 递归清理 bin/obj
scripts/i18n.py i18n 资源管理
scripts/version.py 跨文件版本管理

常见问题

构建失败:找不到 Resources.Designer.cs

首次克隆仓库后,Resources.Designer.cs 可能不存在。运行以下命令生成:

python3 scripts/i18n.py sync

csproj 中已包含条件编译设置,在 Designer.cs 不存在时会跳过编译,但不影响其他文件的构建。建议尽快运行 i18n.py sync 生成该文件。

无头环境中无法使用 avdt

avaloniaui.developertools 仅在桌面环境中可用。在 CI 或无头服务器上构建/测试时,确保不调用 avdt 相关功能。

.NET 10 SDK 未找到

确保安装了 .NET 10 SDK。验证方式:

dotnet --list-sdks

如果输出中没有 10.x 版本,请从 dotnet.microsoft.com 下载。