Skip to content

Plugin Package

Ling edited this page Jul 7, 2026 · 3 revisions

插件包结构

PCL 插件以目录为单位安装。每个插件目录必须包含 plugin.json,并包含入口 DLL 或入口脚本。

C# DLL 插件目录

Plugins/
  com.example.hello/
    plugin.json
    HelloPlugin.dll
    DependencyA.dll
    Resources/
      icon.png

plugin.json 示例:

{
  "id": "com.example.hello",
  "name": "Hello Plugin",
  "version": "1.0.0.0",
  "author": "Example",
  "description": "A minimal C# plugin.",
  "entry": "HelloPlugin.dll",
  "type": "dotnet",
  "minApiVersion": "1.1.0.0",
  "capabilities": ["ContributeTools"]
}

JavaScript 插件目录

Plugins/
  com.example.script/
    plugin.json
    main.js
    lib/
      helper.js

plugin.json 示例:

{
  "id": "com.example.script",
  "name": "Script Plugin",
  "version": "1.0.0.0",
  "author": "Example",
  "description": "A minimal JavaScript plugin.",
  "entry": "main.js",
  "type": "javascript",
  "minApiVersion": "1.1.0.0",
  "capabilities": []
}

关键字段

字段 说明
id 插件唯一 ID。建议反向域名格式,如 com.example.myplugin
name 插件显示名称
version 插件版本号
author 作者
description 简短描述
entry DLL 文件或 JS 入口脚本
type dotnetjavascript
minApiVersion 插件需要的最低 SDK API 版本
maxApiVersion 可选,最高兼容 SDK API 版本
minHostVersion 可选,最低启动器版本
maxHostVersion 可选,最高兼容启动器版本
capabilities 能力声明数组

ID 命名建议

插件 ID 应稳定、唯一、全小写,推荐:

com.example.myplugin
org.example.tools.backup
net.example.lobby.easytier

避免使用:

My Plugin
hello plugin
plugin#1

入口文件规则

DLL 插件:

  • entry 指向插件主 DLL。
  • DLL 内应有一个入口类实现 IPclPlugin
  • 入口类通常使用 [Plugin(...)] 标注。
  • 不要把 PCL.Plugin.Abstractions.dll 打进插件包。

JS 插件:

  • entry 指向入口脚本。
  • 入口脚本定义全局 load(ctx)
  • 可选定义全局 unload()
  • JS 插件运行在 Jint 中,不是 Node.js。

依赖文件

插件可以携带自己的依赖 DLL、资源文件、配置模板等。插件运行时可以通过 context.DataDirectory 保存自己的持久化数据。

不要修改启动器安装目录中的文件。需要存数据时使用插件数据目录。

Clone this wiki locally