Files
ui/docs/architecture/development-workflow.md
2025-10-16 15:08:42 +08:00

4.3 KiB
Raw Blame History

Development Workflow

本节定义控件库的开发环境配置和日常开发流程,确保开发者能够快速上手并保持高效开发。


Local Development Setup

前置要求:

# 必需
- .NET 9.0 SDK (https://dotnet.microsoft.com/download)
- Visual Studio 2022 (17.8+)
- Git 2.40+

# 推荐
- Visual Studio Avalonia 扩展 (用于 XAML 预览)

初始化项目:

# 克隆仓库
git clone <repository-url>
cd 32_avalonia.ui

# 还原 NuGet 包
dotnet restore

# 构建解决方案
dotnet build

# 运行示例应用
dotnet run --project src/Example/Example.csproj

Visual Studio 配置:

  1. 打开 Penguin.AvaloniaUI.sln
  2. 设置 Example 为启动项目
  3. 选择调试配置Debug/Release
  4. 按 F5 启动调试

Development Commands

常用命令:

# 启动示例应用(开发模式,支持热重载)
dotnet watch --project src/Example/Example.csproj

# 运行所有单元测试
dotnet test

# 运行特定测试类
dotnet test --filter "FullyQualifiedName~PropertyGridTests"

# 生成代码覆盖率报告
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=html

# 清理构建产物
dotnet clean

# 格式化代码(基于 .editorconfig
dotnet format

# 打包 NuGet 包Post-MVP
dotnet pack src/Penguin.AvaloniaUI/Penguin.AvaloniaUI.csproj -c Release

Hot Reload 配置

Avalonia 11.x 支持 .NET Hot Reload但有限制

支持的修改:

  • C# 方法体内的代码修改
  • XAML 资源字典的修改(颜色、样式)
  • 部分 XAML 控件属性修改

不支持的修改(需要重启):

  • 新增或删除控件
  • 修改控件模板结构
  • 修改依赖属性定义
  • 修改 ViewModel 属性签名

启用 Hot Reload

Example.csproj 中确保已启用:

<PropertyGroup>
  <AvaloniaUseHotReload>true</AvaloniaUseHotReload>
</PropertyGroup>

Environment Configuration

控件库无需环境变量MVP 阶段),但示例应用可能需要:

# Example/.env (可选,用于测试外部 API 集成)
# MVP 阶段不需要

调试配置launchSettings.json

{
  "profiles": {
    "Example": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "environmentVariables": {
        "DOTNET_ENVIRONMENT": "Development"
      }
    }
  }
}

Git Workflow

Commit Message 格式Conventional Commits

<type>: <description>

[optional body]

Type 类型:

  • feat: 新功能(如 feat: 增加了UserControl的DarkStyle
  • fix: Bug 修复(如 fix: 修复PropertyGrid在主题切换时崩溃
  • refactor: 重构(如 refactor: 优化ThemeManager的资源加载逻辑
  • test: 测试相关(如 test: 添加PropertyGrid的分组功能测试
  • docs: 文档更新(如 docs: 更新README的快速开始指南
  • style: 代码格式调整(如 style: 统一缩进为4空格
  • chore: 构建/工具相关(如 chore: 升级Avalonia到11.3.8

示例:

git commit -m "feat: 实现PropertyGrid的属性分组功能"
git commit -m "fix: 修复TwoColumnLayout在窗口缩放时的对齐问题"
git commit -m "test: 添加ThemeManager的主题切换测试"

分支命名规范:

  • feat/<feature-name> - 新功能分支(如 feat/usercontrol
  • fix/<issue-number> - Bug 修复分支(如 fix/1123
  • refactor/<description> - 重构分支(如 refactor/theme-system
  • test/<description> - 测试分支(如 test/integration

日常开发流程:

  1. 创建功能分支git checkout -b feat/two-column-layout
  2. 编写代码:在 src/Penguin.AvaloniaUI/ 中实现控件
  3. 编写测试:在 src/Penguin.AvaloniaUI.Tests/ 中添加单元测试
  4. 更新示例:在 src/Example/Views/Pages/ 中添加演示页面
  5. 本地验证
    • 运行单元测试:dotnet test
    • 启动示例应用:dotnet run --project src/Example
    • 手动测试主题切换和控件交互
  6. 提交代码
    git add .
    git commit -m "feat: 实现TwoColumnLayout布局控件"
    git push origin feat/two-column-layout