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

3.3 KiB
Raw Blame History

Tech Stack

本表是项目的单一技术事实来源,所有开发必须使用这些确定的技术和版本。

Technology Stack Table

Category Technology Version Purpose Rationale
运行时 .NET 9.0 应用运行时环境 最新版本,支持最新 C# 特性,性能优异
UI 框架 Avalonia 11.3.7 跨平台桌面 UI 框架 现代化、跨平台、活跃社区,不向后兼容旧版本
MVVM 框架 ReactiveUI.Avalonia 11.3.0 响应式 MVVM 实现 强大的响应式能力,简化复杂交互逻辑,与 Avalonia 深度集成
状态管理 ReactiveUI Observable Built-in 属性变化监听和数据流 ReactiveUI 内置,无需额外依赖,统一状态管理方式
样式系统 Semi.Avalonia + 自定义 Latest UI 样式和主题 基于 Semi Design结合苹果颜色系统的自定义实现
颜色系统 苹果颜色系统(自定义实现) N/A 语义化颜色定义 Primary/Secondary/Success/Warning/Error 等语义化颜色,支持浅色/暗色主题
布局系统 Avalonia Layouts + 自定义 Built-in + Custom 控件布局 Avalonia 内置 Panel 系统 + 自定义 TwoColumnLayout
数据绑定 Avalonia Binding Built-in XAML 数据绑定 Avalonia 原生支持,与 ReactiveUI 无缝集成
单元测试 xUnit 2.6+ 单元测试框架 .NET 生态主流选择,简洁易用
包管理 NuGet + 统一包版本管理 Built-in 依赖包管理 使用 Directory.Packages.props 统一管理包版本,避免版本冲突
版本控制 Git 2.40+ 代码版本管理 行业标准
CI/CD 手动构建MVP N/A 持续集成/部署 MVP 阶段不强制 CI/CDPost-MVP 可引入 GitHub Actions
代码格式化 .editorconfig Built-in 代码风格统一 定义缩进、换行等规则
文档生成 XML 文档注释 Built-in API 文档 所有 public API 必须有 XML 注释
国际化 Avalonia IResourceProvider预留 Built-in 多语言支持 MVP 单一语言,架构预留扩展点
性能分析 Visual Studio Profiler / dotnet-trace Built-in 性能测量 验证 NFR60fps、100ms 主题切换、200ms PropertyGrid 生成)

统一包版本管理配置

为了避免多项目间的包版本冲突,项目使用 Central Package Management

需要在项目根目录创建 Directory.Packages.props

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>

  <ItemGroup>
    <PackageVersion Include="Avalonia" Version="11.3.7" />
    <PackageVersion Include="ReactiveUI.Avalonia" Version="11.3.0" />
    <PackageVersion Include="xUnit" Version="2.6.6" />
    <PackageVersion Include="xUnit.runner.visualstudio" Version="2.5.6" />
  </ItemGroup>
</Project>

各项目的 .csproj 文件中引用包时不指定版本号

<ItemGroup>
  <PackageReference Include="Avalonia" />
  <PackageReference Include="ReactiveUI.Avalonia" />
</ItemGroup>

优势

  • 所有项目使用相同的包版本
  • 升级版本时只需修改一处
  • 避免版本冲突导致的编译或运行时错误