From 364aa56cd4382052d3dfcd4e9f798bf339f815e6 Mon Sep 17 00:00:00 2001 From: FlowerRealm Date: Wed, 24 Sep 2025 14:03:07 +0800 Subject: [PATCH 1/3] Add Linux build script and documentation This PR adds a Linux build script (build-linux.sh) that allows building the v2rayN application on Linux systems. It also includes documentation (BUILD-LINUX.md) on how to use the script. Note: The documentation needs to be manually migrated to the Wiki. --- .gitignore | 3 +++ v2rayN/BUILD-LINUX.md | 54 +++++++++++++++++++++++++++++++++++++++++++ v2rayN/build-linux.sh | 30 ++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 v2rayN/BUILD-LINUX.md create mode 100755 v2rayN/build-linux.sh diff --git a/.gitignore b/.gitignore index 7d5416b6..d62612e0 100644 --- a/.gitignore +++ b/.gitignore @@ -399,3 +399,6 @@ FodyWeavers.xsd # JetBrains Rider .idea/ *.sln.iml + +# Add IFLOW.md to gitignore +IFLOW.md \ No newline at end of file diff --git a/v2rayN/BUILD-LINUX.md b/v2rayN/BUILD-LINUX.md new file mode 100644 index 00000000..d532ecce --- /dev/null +++ b/v2rayN/BUILD-LINUX.md @@ -0,0 +1,54 @@ +# Linux构建指南 + +本文档介绍了如何在Linux系统上构建v2rayN应用程序。 + +## 构建脚本 + +项目提供了一个专门的构建脚本 `build-linux.sh`,位于 `v2rayN/` 目录下。该脚本会执行以下操作: + +1. 还原所有项目的NuGet包依赖 +2. 构建所有项目(ServiceLib、GlobalHotKeys和v2rayN.Desktop) +3. 发布自包含的Linux应用程序到 `publish/v2rayN-linux-64/` 目录 + +## 系统要求 + +- Ubuntu/Debian或其他基于Debian的Linux发行版 +- 已安装 .NET 8.0 SDK +- Git(用于获取源代码和子模块) + +## 构建步骤 + +1. 确保已安装 .NET 8.0 SDK: + ```bash + dotnet --version + ``` + +2. 进入项目目录: + ```bash + cd v2rayN + ``` + +3. 运行构建脚本: + ```bash + ./build-linux.sh + ``` + +4. 构建完成后,可执行文件位于: + ``` + ./publish/v2rayN-linux-64/v2rayN + ``` + +5. 直接运行应用程序: + ```bash + ./publish/v2rayN-linux-64/v2rayN + ``` + +## 注意事项 + +- 构建脚本会自动处理子模块的初始化 +- 构建过程可能需要几分钟时间,具体取决于系统性能 +- 生成的可执行文件是自包含的,不依赖系统上的其他库 +- 如果遇到权限问题,请确保构建脚本具有执行权限: + ```bash + chmod +x build-linux.sh + ``` \ No newline at end of file diff --git a/v2rayN/build-linux.sh b/v2rayN/build-linux.sh new file mode 100755 index 00000000..a396c6bf --- /dev/null +++ b/v2rayN/build-linux.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# v2rayN Linux构建脚本(仅生成可执行文件) + +set -e # 遇到错误时停止执行 + +# 还原NuGet包 +echo "正在还原NuGet包..." +dotnet restore ./v2rayN.Desktop/v2rayN.Desktop.csproj +dotnet restore ./ServiceLib/ServiceLib.csproj +dotnet restore ./GlobalHotKeys/src/GlobalHotKeys/GlobalHotKeys.csproj + +# 构建项目 +echo "正在构建项目..." +dotnet build ./ServiceLib/ServiceLib.csproj --configuration Release +dotnet build ./GlobalHotKeys/src/GlobalHotKeys/GlobalHotKeys.csproj --configuration Release +dotnet build ./v2rayN.Desktop/v2rayN.Desktop.csproj --configuration Release + +# 发布应用 +echo "正在发布应用..." +OUTPUT_DIR="./publish" +mkdir -p $OUTPUT_DIR + +# 发布Desktop版本(仅生成可执行文件) +echo "发布Desktop版本..." +dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained true -o $OUTPUT_DIR/v2rayN-linux-64 + +echo "构建完成!" +echo "可执行文件位于: ./publish/v2rayN-linux-64/" +echo "直接运行: ./publish/v2rayN-linux-64/v2rayN" \ No newline at end of file From b710afb04293d511058748a0fe98a756b8e57715 Mon Sep 17 00:00:00 2001 From: FlowerRealm Date: Wed, 24 Sep 2025 14:08:56 +0800 Subject: [PATCH 2/3] Update IFLOW.md with detailed Linux build instructions Added comprehensive Linux build instructions to the IFLOW.md documentation, including both the recommended build script method and manual build commands. --- IFLOW.md | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 IFLOW.md diff --git a/IFLOW.md b/IFLOW.md new file mode 100644 index 00000000..a62cdb86 --- /dev/null +++ b/IFLOW.md @@ -0,0 +1,136 @@ +# v2rayN 项目概述 + +## 项目简介 + +v2rayN 是一个支持 Windows、Linux 和 macOS 的 GUI 客户端,支持多种核心: +- [Xray](https://github.com/XTLS/Xray-core) +- [sing-box](https://github.com/SagerNet/sing-box) +- 以及其他多种代理核心 + +该项目提供了一个用户友好的界面来管理各种代理协议的配置,支持订阅管理、路由规则配置、系统代理设置等功能。 + +## 技术架构 + +### 核心技术栈 +- **.NET 8.0** - 主要开发框架 +- **Avalonia** - 跨平台UI框架 +- **ReactiveUI** - 响应式编程框架 +- **SQLite** - 本地数据存储 + +### 项目结构 +``` +v2rayN/ +├── ServiceLib/ # 核心业务逻辑库 +├── v2rayN/ # Windows WPF版本 +├── v2rayN.Desktop/ # 跨平台Avalonia版本 +├── AmazTool/ # 升级工具 +└── GlobalHotKeys/ # 全局热键库 +``` + +### 支持的协议类型 +- VMess +- VLESS +- Shadowsocks +- SOCKS +- HTTP +- Trojan +- Hysteria2 +- TUIC +- WireGuard +- Anytls +- 自定义配置 + +### 支持的核心类型 +- Xray +- sing-box +- mihomo (clash) +- v2fly +- hysteria +- tuic +- naiveproxy +- 等多种核心 + +## 构建和运行 + +### Linux构建方法 + +#### 使用专用构建脚本(推荐) +项目提供了专门的Linux构建脚本,位于`v2rayN/build-linux.sh`: + +```bash +cd v2rayN +./build-linux.sh +``` + +该脚本会自动完成以下步骤: +1. 还原所有NuGet包依赖 +2. 构建所有项目组件 +3. 发布自包含的Linux应用程序到`publish/v2rayN-linux-64/`目录 + +构建完成后,可执行文件位于`publish/v2rayN-linux-64/v2rayN`,可直接运行: +```bash +./publish/v2rayN-linux-64/v2rayN +``` + +#### 手动构建方法 +也可以手动执行构建命令: + +```bash +# 还原NuGet包 +dotnet restore ./v2rayN.Desktop/v2rayN.Desktop.csproj +dotnet restore ./ServiceLib/ServiceLib.csproj +dotnet restore ./GlobalHotKeys/src/GlobalHotKeys/GlobalHotKeys.csproj + +# 构建项目 +dotnet build ./ServiceLib/ServiceLib.csproj --configuration Release +dotnet build ./GlobalHotKeys/src/GlobalHotKeys/GlobalHotKeys.csproj --configuration Release +dotnet build ./v2rayN.Desktop/v2rayN.Desktop.csproj --configuration Release + +# 发布应用 +dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained true -o ./publish/v2rayN-linux-64 +``` + +### Windows构建命令 +在 Ubuntu 环境下构建 Windows 版本: +```bash +cd v2rayN +dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPath64 +dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-arm64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPathArm64 +dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -o $OutputPath64Sc +dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPath64 +dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-arm64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPathArm64 +dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -p:PublishTrimmed=true -o $OutputPath64Sc +``` + +### 打包脚本 +使用以下脚本打包发布版本: +```bash +chmod 755 package-release-zip.sh +./package-release-zip.sh $OutputArch $OutputPath64 +./package-release-zip.sh $OutputArchArm $OutputPathArm64 +./package-release-zip.sh "windows-64-SelfContained" $OutputPath64Sc +``` + +## 开发约定和规范 + +### 代码风格 +项目使用 `.editorconfig` 文件定义代码风格,主要约定包括: +- 使用 UTF-8 编码 +- 缩进使用空格,大小为4个空格 +- 行尾使用 CRLF +- 去除行尾空格 +- 文件末尾添加新行 + +### C# 代码规范 +- 使用 PascalCase 命名类、接口、属性和方法 +- 接口名称以 'I' 开头 +- 私有字段使用下划线前缀 +- 使用表达式体语法(当在单行时) +- 优先使用隐式类型 var(当类型明显时) +- 使用文件作用域命名空间声明 + +### 架构模式 +- 使用 MVVM 模式(Model-View-ViewModel) +- 使用 ReactiveUI 进行响应式编程 +- 业务逻辑集中在 ServiceLib 项目中 +- 使用 SQLite 进行本地数据存储 \ No newline at end of file From 288a33849898cb6a914dafb6e7f8d4830dc70b2c Mon Sep 17 00:00:00 2001 From: Flower Realm Date: Wed, 24 Sep 2025 14:50:08 +0800 Subject: [PATCH 3/3] Delete IFLOW.md --- IFLOW.md | 136 ------------------------------------------------------- 1 file changed, 136 deletions(-) delete mode 100644 IFLOW.md diff --git a/IFLOW.md b/IFLOW.md deleted file mode 100644 index a62cdb86..00000000 --- a/IFLOW.md +++ /dev/null @@ -1,136 +0,0 @@ -# v2rayN 项目概述 - -## 项目简介 - -v2rayN 是一个支持 Windows、Linux 和 macOS 的 GUI 客户端,支持多种核心: -- [Xray](https://github.com/XTLS/Xray-core) -- [sing-box](https://github.com/SagerNet/sing-box) -- 以及其他多种代理核心 - -该项目提供了一个用户友好的界面来管理各种代理协议的配置,支持订阅管理、路由规则配置、系统代理设置等功能。 - -## 技术架构 - -### 核心技术栈 -- **.NET 8.0** - 主要开发框架 -- **Avalonia** - 跨平台UI框架 -- **ReactiveUI** - 响应式编程框架 -- **SQLite** - 本地数据存储 - -### 项目结构 -``` -v2rayN/ -├── ServiceLib/ # 核心业务逻辑库 -├── v2rayN/ # Windows WPF版本 -├── v2rayN.Desktop/ # 跨平台Avalonia版本 -├── AmazTool/ # 升级工具 -└── GlobalHotKeys/ # 全局热键库 -``` - -### 支持的协议类型 -- VMess -- VLESS -- Shadowsocks -- SOCKS -- HTTP -- Trojan -- Hysteria2 -- TUIC -- WireGuard -- Anytls -- 自定义配置 - -### 支持的核心类型 -- Xray -- sing-box -- mihomo (clash) -- v2fly -- hysteria -- tuic -- naiveproxy -- 等多种核心 - -## 构建和运行 - -### Linux构建方法 - -#### 使用专用构建脚本(推荐) -项目提供了专门的Linux构建脚本,位于`v2rayN/build-linux.sh`: - -```bash -cd v2rayN -./build-linux.sh -``` - -该脚本会自动完成以下步骤: -1. 还原所有NuGet包依赖 -2. 构建所有项目组件 -3. 发布自包含的Linux应用程序到`publish/v2rayN-linux-64/`目录 - -构建完成后,可执行文件位于`publish/v2rayN-linux-64/v2rayN`,可直接运行: -```bash -./publish/v2rayN-linux-64/v2rayN -``` - -#### 手动构建方法 -也可以手动执行构建命令: - -```bash -# 还原NuGet包 -dotnet restore ./v2rayN.Desktop/v2rayN.Desktop.csproj -dotnet restore ./ServiceLib/ServiceLib.csproj -dotnet restore ./GlobalHotKeys/src/GlobalHotKeys/GlobalHotKeys.csproj - -# 构建项目 -dotnet build ./ServiceLib/ServiceLib.csproj --configuration Release -dotnet build ./GlobalHotKeys/src/GlobalHotKeys/GlobalHotKeys.csproj --configuration Release -dotnet build ./v2rayN.Desktop/v2rayN.Desktop.csproj --configuration Release - -# 发布应用 -dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained true -o ./publish/v2rayN-linux-64 -``` - -### Windows构建命令 -在 Ubuntu 环境下构建 Windows 版本: -```bash -cd v2rayN -dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPath64 -dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-arm64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPathArm64 -dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -o $OutputPath64Sc -dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPath64 -dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-arm64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPathArm64 -dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -p:PublishTrimmed=true -o $OutputPath64Sc -``` - -### 打包脚本 -使用以下脚本打包发布版本: -```bash -chmod 755 package-release-zip.sh -./package-release-zip.sh $OutputArch $OutputPath64 -./package-release-zip.sh $OutputArchArm $OutputPathArm64 -./package-release-zip.sh "windows-64-SelfContained" $OutputPath64Sc -``` - -## 开发约定和规范 - -### 代码风格 -项目使用 `.editorconfig` 文件定义代码风格,主要约定包括: -- 使用 UTF-8 编码 -- 缩进使用空格,大小为4个空格 -- 行尾使用 CRLF -- 去除行尾空格 -- 文件末尾添加新行 - -### C# 代码规范 -- 使用 PascalCase 命名类、接口、属性和方法 -- 接口名称以 'I' 开头 -- 私有字段使用下划线前缀 -- 使用表达式体语法(当在单行时) -- 优先使用隐式类型 var(当类型明显时) -- 使用文件作用域命名空间声明 - -### 架构模式 -- 使用 MVVM 模式(Model-View-ViewModel) -- 使用 ReactiveUI 进行响应式编程 -- 业务逻辑集中在 ServiceLib 项目中 -- 使用 SQLite 进行本地数据存储 \ No newline at end of file