Skip to content

Commit 6989873

Browse files
committed
添加macos打包功能
1 parent 9bd1423 commit 6989873

2 files changed

Lines changed: 192 additions & 75 deletions

File tree

README.md

Lines changed: 191 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,229 @@
11
# VSCode Dotnet Deploy
22

3-
一键部署 .NET 应用到 Ubuntu/Linux 服务器的 VSCode 插件。
3+
一键部署 .NET 应用到服务器或打包为桌面应用的 VSCode 插件。
44

5-
## 功能
5+
## ✨ 功能特性
66

7+
### 🚀 部署功能
78
- 🔍 自动扫描解决方案中的可执行项目
89
- 📦 可配置的发布选项(self-contained、single-file、debug symbols)
910
- 🚀 支持 SSH 密钥或密码认证连接服务器
1011
- 📤 SFTP 上传发布产物
1112
- ▶️ 远程执行 systemd 启动命令
12-
- 🔧 **Native AOT 交叉编译** (macOS → Linux/Windows)
1313

14-
## Native AOT 交叉编译
15-
16-
插件支持从 macOS 交叉编译 Native AOT 应用到 Linux 和 Windows,无需安装 NuGet 包。
17-
18-
### 功能特点
14+
### 🔧 Native AOT 交叉编译
1915
- 🐧 **Linux 目标**: 自动使用 Zig 作为链接器
2016
- 🪟 **Windows 目标**: 自动使用 LLD 链接器和 Windows SDK
2117
- 🛠️ **工具链管理**: 提供可视化安装向导和一键安装功能
2218
- 📦 **零配置**: 自动检测并配置所有必要的 MSBuild 参数
2319

24-
### 快速开始
25-
1. 打开侧边栏的 Dotnet Deploy
26-
2. 勾选 **Native AOT 编译**
27-
3. 选择目标运行时 (如 `linux-x64``win-x64`)
28-
4. 如果缺少工具链,会显示"配置向导"按钮
29-
5. 点击按钮按照指引安装所需工具 (Zig, LLD, xwin 等)
20+
### 📦 UPX 压缩
21+
- 🗜️ 支持 Linux 和 Windows 目标的可执行文件压缩
22+
- 📊 可选压缩级别:`-1``-9``--best``--lzma`
23+
- ⚠️ macOS 目标不支持(Mach-O 格式限制)
24+
25+
### 🍎 macOS 打包 (新功能)
26+
- 📱 生成标准 `.app` 应用程序包
27+
- 💿 生成 `.dmg` 磁盘镜像(可分发)
28+
- 📦 生成 `.pkg` 安装包
29+
- 🎨 自定义应用图标(支持 .png 或 .icns)
30+
- 🔐 代码签名和 Apple 公证
31+
- 🛡️ 完整的 Entitlements 配置:
32+
- App Sandbox
33+
- Hardened Runtime
34+
- 网络权限(客户端/服务器)
35+
- 文件系统权限
36+
- 硬件访问权限(摄像头、麦克风等)
37+
38+
### 📢 Telegram 通知
39+
- 📲 部署完成后发送通知
40+
- 📎 可选上传构建产物到 Telegram
3041

31-
更多详细信息请参阅 [交叉编译配置指南](CROSS_COMPILE_SETUP.md)
42+
## 📋 快速开始
3243

33-
## 安装
44+
### 1. 安装插件
3445

3546
```bash
36-
cd tools/vscode-dotnet-deploy
47+
# 从 VSIX 安装
48+
# Extensions → Install from VSIX → 选择 .vsix 文件
49+
50+
# 或开发模式
51+
git clone https://github.com/interface95/vscode-dotnet-deploy.git
52+
cd vscode-dotnet-deploy
3753
npm install
3854
npm run compile
55+
# 按 F5 启动调试
3956
```
4057

41-
安装到 VSCode:
42-
```bash
43-
# 方式 1: 打包安装
44-
npm install -g vsce
45-
vsce package
46-
# 然后在 VSCode 中:Extensions → Install from VSIX
58+
### 2. 基本使用
59+
60+
1. 打开包含 `.sln` 文件的工作区
61+
2. 点击左侧边栏的 **Dotnet Deploy** 图标
62+
3. 在下拉列表中选择要部署的项目
63+
4. 选择部署模式:
64+
- **Deploy to Server**: 部署到远程服务器
65+
- **Local Publish**: 本地发布(可选 macOS 打包)
66+
67+
### 3. 部署到服务器
68+
69+
1. 填写服务器配置(Host, Username, Key Path)
70+
2. 配置发布选项(Runtime, Self-contained 等)
71+
3. 点击 **🚀 Deploy Now**
72+
4. 观察进度条
73+
74+
### 4. Native AOT 交叉编译
75+
76+
1. 勾选 **Native AOT 编译**
77+
2. 选择目标运行时(如 `linux-x64``win-x64`
78+
3. 如果缺少工具链,会显示 **配置向导** 按钮
79+
4. 点击按钮安装所需工具(Zig, LLD, xwin 等)
80+
81+
详细配置请参阅 [交叉编译配置指南](CROSS_COMPILE_SETUP.md)
82+
83+
### 5. macOS 打包
84+
85+
1. 选择目标运行时为 `osx-x64``osx-arm64`
86+
2. 勾选 **macOS 打包**
87+
3. 点击 **⚙️ 配置** 按钮打开配置面板
88+
4. 配置应用信息:
89+
- 应用名称、Bundle ID
90+
- 版本号
91+
- 应用图标
92+
- 打包格式(.app / .dmg / .pkg)
93+
5. 可选配置代码签名和 Entitlements
94+
6. 点击 **Local Publish**
95+
96+
## ⚙️ 配置说明
97+
98+
### 服务器配置
99+
100+
| 配置项 | 说明 | 默认值 |
101+
|--------|------|--------|
102+
| `server.host` | SSH 服务器主机名或 IP | - |
103+
| `server.port` | SSH 端口 | `22` |
104+
| `server.username` | SSH 用户名 | `root` |
105+
| `server.privateKeyPath` | SSH 私钥路径 | `~/.ssh/id_rsa` |
106+
| `deploy.remotePath` | 远程部署目录 | `/opt/apps` |
107+
| `deploy.afterUploadCommand` | 上传后执行的命令 | `sudo {remote_path}/{app_name} start` |
108+
109+
### 发布选项
110+
111+
| 配置项 | 说明 | 默认值 |
112+
|--------|------|--------|
113+
| `publish.runtime` | 目标运行时 | `linux-x64` |
114+
| `publish.selfContained` | 独立发布(包含运行时) | `true` |
115+
| `publish.singleFile` | 发布为单文件 | `false` |
116+
| `publish.aot` | Native AOT 编译 | `false` |
117+
| `publish.trim` | 裁剪未使用代码 | `false` |
118+
| `publish.debugSymbols` | 包含调试符号 | `false` |
119+
| `publish.stripSymbols` | 剥离符号 | `false` |
120+
| `publish.invariantGlobalization` | 无全球化依赖 | `false` |
121+
122+
### UPX 压缩
123+
124+
| 配置项 | 说明 | 默认值 |
125+
|--------|------|--------|
126+
| `upx.enabled` | 启用 UPX 压缩 | `false` |
127+
| `upx.level` | 压缩级别 | `--best` |
128+
129+
> ⚠️ UPX 仅支持 Linux 和 Windows 目标,macOS Mach-O 格式不支持
130+
131+
### macOS 打包
132+
133+
| 配置项 | 说明 | 默认值 |
134+
|--------|------|--------|
135+
| `macos.enabled` | 启用 macOS 打包 | `false` |
136+
| `macos.appName` | 应用名称 | - |
137+
| `macos.bundleId` | Bundle Identifier | `com.example.app` |
138+
| `macos.version` | 版本号 | `1.0.0` |
139+
| `macos.format` | 打包格式 | `app` |
140+
| `macos.iconPath` | 图标路径 | - |
141+
| `macos.minimumOSVersion` | 最低 macOS 版本 | `10.15` |
142+
143+
### 交叉编译
144+
145+
| 配置项 | 说明 | 默认值 |
146+
|--------|------|--------|
147+
| `crossCompile.enabled` | 启用交叉编译 | `true` |
148+
| `crossCompile.zigPath` | Zig 编译器路径 | 自动检测 |
149+
| `crossCompile.xwinSdkPath` | Windows SDK 路径 | `~/.local/share/xwin-sdk` |
150+
151+
## 📁 工作流程
47152

48-
# 方式 2: 开发模式
49-
# 在 VSCode 中按 F5 启动调试
153+
```
154+
┌─────────────────────┐
155+
│ 1. 选择项目 │
156+
└──────────┬──────────┘
157+
158+
┌─────────────────────┐
159+
│ 2. dotnet publish │ 编译发布
160+
└──────────┬──────────┘
161+
162+
┌─────────────────────┐
163+
│ 3. UPX 压缩 (可选) │ 压缩可执行文件
164+
└──────────┬──────────┘
165+
166+
┌──────┴──────┐
167+
▼ ▼
168+
┌─────────┐ ┌─────────────┐
169+
│ 服务器 │ │ 本地打包 │
170+
│ 部署模式 │ │ 模式 │
171+
└────┬────┘ └──────┬──────┘
172+
▼ ▼
173+
┌─────────┐ ┌─────────────┐
174+
│ SFTP │ │ macOS 打包 │
175+
│ 上传 │ │ .app/.dmg │
176+
└────┬────┘ └──────┬──────┘
177+
▼ ▼
178+
┌─────────┐ ┌─────────────┐
179+
│ 启动 │ │ 完成 │
180+
│ 服务 │ │ │
181+
└─────────┘ └─────────────┘
50182
```
51183

52-
## 配置
184+
## 🔧 系统要求
53185

54-
在 VSCode settings.json 中添加:
186+
- **本地环境**
187+
- .NET SDK 8.0+
188+
- VSCode 1.85+
189+
- Node.js 18+
55190

56-
```json
57-
{
58-
"dotnetDeploy.server.host": "your-server-ip",
59-
"dotnetDeploy.server.port": 22,
60-
"dotnetDeploy.server.username": "root",
61-
"dotnetDeploy.server.privateKeyPath": "~/.ssh/id_rsa",
62-
"dotnetDeploy.deploy.remotePath": "/opt/apps"
63-
}
64-
```
191+
- **交叉编译** (可选)
192+
- Zig 0.11+(Linux 目标)
193+
- LLD + xwin(Windows 目标)
65194

66-
## 使用
195+
- **UPX 压缩** (可选)
196+
- `brew install upx`
67197

68-
48. 打开包含 `.sln` 文件的工作区
69-
49. 点击左侧边栏的 Dotnet Deploy 图标
70-
50. 在下拉列表中选择要部署的项目
71-
51. 填写服务器配置(Host, Username, Key Path 等)
72-
52. 配置发布选项(Runtime, Self-contained 等)
73-
53. 点击 "🚀 Deploy Now" 按钮
74-
54. 观察下方的部署进度条
198+
- **服务器要求** (部署模式)
199+
- SSH 密钥认证
200+
- systemd(支持 `./程序名 start` 命令)
75201

76-
## 发布选项
202+
## 📝 更新日志
77203

78-
| 选项 | 说明 |
79-
|------|------|
80-
| Self-contained | 包含 .NET 运行时,不需要服务器安装 .NET |
81-
| Single file | 打包成单个可执行文件 |
82-
| Debug symbols | 包含 .pdb 调试符号文件 |
204+
### v0.1.62
205+
- ✨ 新增 macOS 打包功能(.app/.dmg/.pkg)
206+
- ✨ 新增 Entitlements 配置面板
207+
- ✨ 新增本地发布进度显示(编译/压缩/打包)
208+
- 🐛 修复 UPX 参数未传递的问题
209+
- 🐛 修复 macOS 打包时循环复制的问题
210+
- 🐛 修复 DMG/PKG 生成后临时 .app 未清理的问题
83211

84-
## 工作流程
212+
### v0.1.50
213+
- ✨ 新增 Native AOT 交叉编译支持
214+
- ✨ 新增工具链安装向导
215+
- ✨ 新增 UPX 压缩支持
85216

86-
```
87-
┌─────────────────┐
88-
│ 1. 选择项目 │
89-
└────────┬────────┘
90-
91-
┌─────────────────┐
92-
│ 2. dotnet pub │ 本地发布
93-
└────────┬────────┘
94-
95-
┌─────────────────┐
96-
│ 3. SFTP 上传 │ 上传到服务器
97-
└────────┬────────┘
98-
99-
┌─────────────────┐
100-
│ 4. sudo start │ 启动服务
101-
└─────────────────┘
102-
```
217+
### v0.1.0
218+
- 🎉 初始版本
219+
- 基本的 SSH 部署功能
103220

104-
## 要求
221+
## 📄 License
105222

106-
- 服务器需要 SSH 密钥认证
107-
- 项目需要集成 systemd(支持 `./程序名 start` 命令)
108-
- 本地需要安装 .NET SDK
223+
MIT
109224

110-
## License
225+
## 🤝 贡献
111226

112-
MIT
227+
欢迎提交 Issue 和 Pull Request!
228+
229+
[GitHub Repository](https://github.com/interface95/vscode-dotnet-deploy)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-dotnet-deploy",
33
"displayName": "Dotnet 部署工具",
44
"description": "通过 SSH 将 .NET 应用程序部署到 Ubuntu/Linux 服务器",
5-
"version": "0.1.71",
5+
"version": "0.1.62",
66
"publisher": "local",
77
"repository": {
88
"type": "git",

0 commit comments

Comments
 (0)