本文档详细介绍了 v2rayN 代码库的组织结构,包括其项目、它们之间的关系以及整个仓库的结构。它为理解系统中各个组件如何协同工作提供了路线图。
v2rayN 仓库被组织成几个独立的 .NET 项目,每个项目在应用程序生态系统中扮演着特定的角色。该仓库旨在支持特定于 Windows 和跨平台实现,同时共享核心功能。
来源:v2rayN/v2rayN.sln v2rayN/Directory.Build.props .gitmodules
该解决方案包含五个主要项目,每个项目在应用程序生态系统中扮演着特定的角色。
| 项目 | 类型 | 目的 | 框架 |
|---|---|---|---|
| v2rayN | WPF 应用程序 | 特定于 Windows 的 GUI | net8.0-windows10.0.17763 |
| ServiceLib | 类库 | 核心共享功能 | net8.0 |
| v2rayN.Desktop | Avalonia 应用程序 | 跨平台 GUI | net8.0 |
| AmazTool | 控制台应用程序 | 升级工具 | net8.0 |
| GlobalHotKeys | 类库 | 全局热键功能 | net8.0 |
整个解决方案的结构如下:
v2rayN 项目是使用 WPF (Windows Presentation Foundation) 构建的特定于 Windows 的 GUI 应用程序。它提供了具有 Material Design 风格的原生 Windows 体验。
主要特性
来源:v2rayN/v2rayN/v2rayN.csproj
ServiceLib 是核心库,包含 v2rayN 和 v2rayN.Desktop 都使用的共享功能。它封装了业务逻辑、配置处理、代理管理和其他常见功能。
关键组件
来源:v2rayN/ServiceLib/ServiceLib.csproj
ServiceLib 中的重要组件
v2rayN.Desktop 项目是使用 Avalonia UI 框架实现的跨平台版本,允许应用程序在 Windows、Linux 和 macOS 上运行。
主要特性
来源:v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj v2rayN/v2rayN.Desktop/Handler/HotkeyHandler.cs
AmazTool 是一个控制台应用程序,用于升级或更新 v2rayN 和 v2rayN.Desktop。
目的
来源:v2rayN/AmazTool/AmazTool.csproj
GlobalHotKeys 作为 Git 子模块包含,并提供跨不同平台注册和处理全局热键的功能。
主要功能
来源:.gitmodules
该仓库采用了现代的 .NET 构建和包管理方法。
包版本集中管理在 Directory.Packages.props 中,确保了所有项目的一致性。这种方法简化了依赖项管理和版本控制。
项目中使用的主要包
来源:v2rayN/Directory.Packages.props
通用构建属性定义在 Directory.Build.props 中,包括:
来源:v2rayN/Directory.Build.props
该仓库使用 GitHub Actions 工作流进行自动化构建和打包。
该仓库使用 Dependabot 进行自动依赖更新。
该仓库的架构旨在通过以下方式支持多平台:
来源:v2rayN/ServiceLib/ServiceLib.csproj32-33
v2rayN 仓库的架构设计遵循了良好的结构化原则,分离了关注点,同时最大限度地提高了代码复用性。
这种架构使应用程序能够高效地在多个平台上运行,同时保持一致的核心代码库和功能集。