本页面为希望为 Shadowsocks Windows 客户端做出贡献的开发者提供技术信息。内容涵盖开发环境设置、构建过程、测试和贡献指南。有关应用程序整体架构的信息,请参阅 架构。
开发 Shadowsocks Windows 需要以下工具和组件:
| 要求 | 描述 |
|---|---|
| Visual Studio | 2019 或更新版本,附带 C# 开发工具 |
| .NET Framework | 4.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
克隆仓库
git clone https://github.com/shadowsocks/shadowsocks-windows.git
cd shadowsocks-windows
在 Visual Studio 中打开解决方案文件 shadowsocks-windows.sln。
还原 NuGet 程序包
Update-Package -reinstall选择构建配置
Debug 或 Release 配置x86 平台目标构建解决方案
定位输出
bin\x86\Debug\bin\x86\Release\来源:shadowsocks-csharp/shadowsocks-csharp.csproj47-68
来源:shadowsocks-csharp/shadowsocks-csharp.csproj438-456
项目使用 MSTest 框架进行单元测试。测试项目位于 test 目录中。
运行测试
当前测试涵盖的功能包括:
添加新测试
UnitTest 类中添加测试方法,或创建新的测试类[TestMethod] 属性装饰方法Assert 方法来验证预期结果在调试模式下运行时,会启用额外的诊断功能。
来源:shadowsocks-csharp/shadowsocks-csharp.csproj47-57
Shadowsocks 使用 NLog 进行日志记录。配置文件已嵌入为资源。
关键日志功能
ss_win_temp 目录中。来源:shadowsocks-csharp/Properties/Resources.Designer.cs132-145
该应用程序嵌入了几个运行时使用的资源。
| 资源 | 目的 |
|---|---|
| abp.js | PAC 规则处理脚本 |
| dlc.dat | 默认配置 |
| libsscrypto.dll | 加密库 |
| NLog.config | 日志配置 |
| privoxy.exe | HTTP 代理支持 |
| sysproxy.exe | 系统代理配置工具 |
| user-rule.txt | PAC 的默认用户规则 |
来源:shadowsocks-csharp/Properties/Resources.resx120-166
该应用程序通过资源文件支持多种语言。
来源:shadowsocks-csharp/shadowsocks-csharp.csproj335-344
在发布模式下构建时:
bin\x86\Release\。来源:shadowsocks-csharp/shadowsocks-csharp.csproj58-68
此配置建议在提交拉取请求之前进行测试,因为它代表了实际的用户体验。