菜单

开发

相关源文件

本页面为希望为 Shadowsocks Windows 客户端做出贡献的开发者提供技术信息。内容涵盖开发环境设置、构建过程、测试和贡献指南。有关应用程序整体架构的信息,请参阅 架构

开发环境要求

开发 Shadowsocks Windows 需要以下工具和组件:

要求描述
Visual Studio2019 或更新版本,附带 C# 开发工具
.NET Framework4.8 SDK 和运行时
Git用于源代码管理
NuGet用于包管理(包含在 Visual Studio 中)

该项目使用了几个关键的库和框架。

- ReactiveUI (MVVM framework)
- NLog (Logging framework)
- Newtonsoft.Json (JSON serialization)
- Fody (IL weaving)
- Global Hotkey (Hotkey management)
- WPF and Windows Forms (UI frameworks)

来源:shadowsocks-csharp/shadowsocks-csharp.csproj1-219

项目结构与组织

开发架构

下图说明了开发环境中的主要组件及其交互方式。

来源:shadowsocks-csharp/shadowsocks-csharp.csproj1-70 test/UnitTest.cs1-45

关键项目文件和目录

项目结构遵循代码文件的逻辑组织。

来源:shadowsocks-csharp/shadowsocks-csharp.csproj220-334

从源代码构建

获取源代码

  1. 克隆仓库

    git clone https://github.com/shadowsocks/shadowsocks-windows.git
    cd shadowsocks-windows
    
  2. 在 Visual Studio 中打开解决方案文件 shadowsocks-windows.sln

构建解决方案

  1. 还原 NuGet 程序包

    • 在解决方案资源管理器中右键单击解决方案
    • 选择“还原 NuGet 程序包”
    • 或者使用程序包管理器控制台:Update-Package -reinstall
  2. 选择构建配置

    • 选择 DebugRelease 配置
    • 选择 x86 平台目标
  3. 构建解决方案

    • 按 Ctrl+Shift+B 或选择“生成”→“生成解决方案”
    • 或者右键单击项目并选择“生成”
  4. 定位输出

    • 调试构建:bin\x86\Debug\
    • 发布构建:bin\x86\Release\

来源:shadowsocks-csharp/shadowsocks-csharp.csproj47-68

构建流程

来源:shadowsocks-csharp/shadowsocks-csharp.csproj438-456

测试

单元测试

项目使用 MSTest 框架进行单元测试。测试项目位于 test 目录中。

运行测试

  1. 在 Visual Studio 中打开解决方案
  2. 打开测试资源管理器(测试 → 测试资源管理器)
  3. 点击“运行全部”以执行所有测试

当前测试涵盖的功能包括:

  • 热键转换和字符串表示
  • 从字符串解析热键

来源:test/UnitTest.cs17-42

添加新测试

添加新测试

  1. UnitTest 类中添加测试方法,或创建新的测试类
  2. [TestMethod] 属性装饰方法
  3. 使用 Assert 方法来验证预期结果

调试

调试配置

在调试模式下运行时,会启用额外的诊断功能。

  • 会生成调试符号。
  • 会定义 TRACE 和 DEBUG 常量。
  • 禁用优化。

来源:shadowsocks-csharp/shadowsocks-csharp.csproj47-57

日志系统

Shadowsocks 使用 NLog 进行日志记录。配置文件已嵌入为资源。

关键日志功能

  • 日志文件存储在 ss_win_temp 目录中。
  • 默认日志级别可配置。
  • 日志可在应用程序的日志查看器中查看。

来源:shadowsocks-csharp/Properties/Resources.Designer.cs132-145

贡献

贡献工作流程

编码风格

  • 遵循现有的代码风格和约定。
  • 使用描述性的变量名和方法名。
  • 为复杂逻辑添加注释
  • 为新的 UI 功能遵循 MVVM 模式。
  • 记录公共 API。

文档

  • 更新或添加 XML 文档注释。
  • 添加主要功能时更新 README.md。
  • 考虑在进行重大更改时更新 Wiki。

资源

嵌入式资源

该应用程序嵌入了几个运行时使用的资源。

资源目的
abp.jsPAC 规则处理脚本
dlc.dat默认配置
libsscrypto.dll加密库
NLog.config日志配置
privoxy.exeHTTP 代理支持
sysproxy.exe系统代理配置工具
user-rule.txtPAC 的默认用户规则

来源:shadowsocks-csharp/Properties/Resources.resx120-166

国际化

该应用程序通过资源文件支持多种语言。

  • 英语(默认)
  • 俄语
  • 简体中文
  • 繁体中文
  • 日语
  • 韩语
  • 法语

来源:shadowsocks-csharp/shadowsocks-csharp.csproj335-344

编译模式

发布模式

在发布模式下构建时:

  • 启用优化。
  • 仍会生成调试符号(用于崩溃报告)。
  • 仅定义 TRACE 常量。
  • 输出位于 bin\x86\Release\

来源:shadowsocks-csharp/shadowsocks-csharp.csproj58-68

此配置建议在提交拉取请求之前进行测试,因为它代表了实际的用户体验。