Skip to content

打包发布

本章节介绍如何构建、打包和发布 Fastdotnet 插件到插件市场。


📖 本章内容

  • 后端构建
  • 前端构建
  • 打包插件
  • 版本管理
  • 上传插件市场
  • 手动部署
  • 更新插件

🏗️ 构建流程

1. 构建后端

bash
cd MyPlugin/Backend
dotnet publish -c Release -o ../publish/{PluginId}/dependencies

说明:

  • -c Release: 使用 Release 配置(优化性能)
  • -o: 指定输出目录

2. 构建前端

管理端

bash
cd ../Frontend/MyPlugin.Admin
pnpm build

构建产物会自动输出到 ../../publish/{PluginId}/wwwroot/admin/

应用端

bash
cd ../MyPlugin.App
pnpm build

构建产物会自动输出到 ../../publish/{PluginId}/wwwroot/app/

3. 验证构建结果

检查 publish/{PluginId}/ 目录结构:

{PluginId}/
├── dependencies/          # 后端 DLL
│   ├── MyPlugin.dll
│   └── ...其他依赖
├── wwwroot/
│   ├── admin/             # 管理端静态资源
│   │   ├── assets/
│   │   └── index.html
│   └── app/               # 应用端静态资源
│       ├── assets/
│       └── index.html
└── plugin.json            # 插件元数据

📦 打包插件

Windows (PowerShell)

bash
cd publish/{PluginId}
Compress-Archive -Path * -DestinationPath ../../MyPlugin-v1.0.0.zip

Linux / macOS

bash
cd publish/{PluginId}
zip -r ../../MyPlugin-v1.0.0.zip .

命名规范: {PluginName}-v{Version}.zip

例如:MyPlugin-v1.0.0.zip


🔢 版本管理

语义化版本

遵循 Semantic Versioning 规范:

MAJOR.MINOR.PATCH
  • MAJOR: 不兼容的 API 变更
  • MINOR: 向后兼容的功能新增
  • PATCH: 向后兼容的问题修正

更新版本号

修改以下文件中的版本号:

  1. plugin.json

    json
    {
      "Version": "1.0.1"
    }
  2. MyPlugin.csproj

    xml
    <Version>1.0.1</Version>
  3. package.json (前端)

    json
    {
      "version": "1.0.1"
    }

Git 标签

bash
git add .
git commit -m "Release v1.0.1"
git tag v1.0.1
git push origin v1.0.1

🚀 发布到插件市场

1. 登录插件市场

访问 https://fastdotnet.top/marketplace

2. 上传插件

  1. 进入"开发者中心"
  2. 点击"发布新插件"
  3. 填写插件信息:
    • 插件名称
    • 插件描述
    • 版本号
    • 更新日志
    • 截图预览
  4. 上传 ZIP 文件
  5. 提交审核

3. 审核流程

  • 自动检测: 文件格式、元数据验证
  • 人工审核: 功能测试、安全性检查
  • 审核时间: 通常 1-3 个工作日

4. 发布成功

审核通过后,插件会在插件市场上架,用户可以搜索和安装。


🖥️ 手动部署

如果不通过插件市场,可以手动部署到服务器。

步骤

  1. 复制插件文件

    bash
    # 将 ZIP 文件复制到服务器
    scp MyPlugin-v1.0.0.zip user@server:/path/to/plugins/
  2. 解压到 Plugins 目录

    bash
    cd /path/to/Fastdotnet/Plugins
    unzip MyPlugin-v1.0.0.zip
  3. 重启应用(如果需要)

    bash
    systemctl restart fastdotnet

注意: Fastdotnet 支持热加载,大多数情况下无需重启。


🔄 更新插件

1. 修改代码

进行功能开发或 Bug 修复。

2. 更新版本号

按照语义化版本规范更新版本号。

3. 重新构建

bash
# 后端
dotnet publish -c Release

# 前端
pnpm build

4. 重新打包

bash
zip -r MyPlugin-v1.1.0.zip publish/{PluginId}/*

5. 发布新版本

  • 插件市场: 上传新版本,用户会收到更新通知
  • 手动部署: 替换旧版本文件

📋 发布检查清单

在发布之前,确保完成以下检查:

代码质量

  • [ ] 代码已格式化
  • [ ] 无编译警告和错误
  • [ ] 单元测试通过
  • [ ] 代码审查完成

功能测试

  • [ ] 所有功能正常工作
  • [ ] API 接口测试通过
  • [ ] 前端页面正常显示
  • [ ] 边界情况已处理

文档

  • [ ] README 已更新
  • [ ] 更新日志已编写
  • [ ] API 文档完整
  • [ ] 使用说明清晰

元数据

  • [ ] plugin.json 信息准确
  • [ ] 版本号正确
  • [ ] 依赖项完整
  • [ ] 许可证声明

安全

  • [ ] 无敏感信息泄露
  • [ ] SQL 注入防护
  • [ ] XSS 防护
  • [ ] 权限控制正确

❓ 常见问题

Q: 构建后找不到文件?

A: 检查 vite.config.ts 中的 outDir 配置是否正确。

Q: 插件市场审核失败?

A: 查看审核意见,修复问题后重新提交。常见原因:

  • 功能不完整
  • 存在安全漏洞
  • 文档不清晰
  • 与描述不符

Q: 如何回滚版本?

A:

  1. 在插件市场下架当前版本
  2. 上传旧版本
  3. 或手动替换服务器上的文件

Q: 插件更新后用户需要做什么?

A:

  • 插件市场安装: 用户可以在插件管理中点击"更新"
  • 手动部署: 需要管理员手动替换文件并重启(如果需要)

🎯 最佳实践

1. 自动化构建

使用 CI/CD 工具(如 GitHub Actions、Azure DevOps)自动化构建和发布流程。

2. 版本控制

  • 每个版本打 Git 标签
  • 维护 CHANGELOG.md
  • 保持向后兼容

3. 文档同步

  • 每次更新同步文档
  • 提供迁移指南
  • 标注破坏性变更

4. 用户反馈

  • 收集用户反馈
  • 及时修复 Bug
  • 定期发布更新

🔗 相关链接

Released under the MIT License.