import{_ as e,c as n,a as i,e as l,b as t,d,w as r,r as h,o as p}from"./app-DlzW8FTI.js";const o="/assets/image-Bpsx7f75.png",k="/assets/image-2-CHhsrExz.png",c={};function g(m,s){const a=h("RouteLink");return p(),n("div",null,[s[3]||(s[3]=i("h1",{id:"开始编写插件",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#开始编写插件"},[i("span",null,"开始编写插件")])],-1)),s[4]||(s[4]=i("p",null,"本文章将介绍如何创建、调试并运行 ClassIsland 的插件项目。",-1)),s[5]||(s[5]=i("h2",{id:"设置开发环境",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#设置开发环境"},[i("span",null,"设置开发环境")])],-1)),i("p",null,[s[1]||(s[1]=t("在开始之前,您需要按照")),d(a,{to:"/dev/get-started/development-plugins.html"},{default:r(()=>s[0]||(s[0]=[t("设置 ClassIsland 插件开发环境")])),_:1}),s[2]||(s[2]=t("的指引设置插件开发环境。"))]),s[6]||(s[6]=l('

创建项目

您可以使用项目模板快速开始开发。

  1. 如果您没有安装过模板包,先运行以下命令安装模板包

    dotnet new install ClassIsland.PluginTemplate.Packaging
  2. 在 JetBrains Rider 或其它支持的编辑器中中选择此模板创建项目

    在 JetBrains Rider 中创建

    或者在 .NET CLI 中通过以下命令行创建项目

    通过命令行创建
    # MyPlugin 是您的插件项目名称
    mkdir MyPlugin
    cd MyPlugin
    dotnet new cipx-template -n MyPlugin
  3. 打开并运行项目。
    正在运行的项目

🎉恭喜!您成功创建了您的第一个插件!

认识插件结构

在使用模板创建插件后,您会看到项目内已经有了一些文件,以下是这些文件的大致用途:

MyPlugin
 |- MyPlugin.csproj          // 项目文件
 |- Plugin.cs                // 插件入口点
 |- manifest.yml             // 插件清单文件
 |- README.md                // 插件自述文件
 |- icon.png                 // 插件图标
 |- Properties               // 项目属性(如启动配置等)文件夹
    |- launchSettings.json   // .NET 项目启动配置

这些文件的具体用途将在之后介绍。

插件清单文件

插件清单文件manifest.yml包含了插件的基本信息,如插件入口程序集等。使用插件模板创建的项目的清单文件已经基本配置完毕,您只需按照需要进行微调。

清单文件具有以下属性:

属性名类型必填?说明
idstring插件的唯一 id
entranceAssemblystring插件入口程序集。在加载插件时将从这个程序集中查找插件入口点。
apiVersionVersion此插件面向的 ClassIsland 版本。此插件将只能在高于此版本的 ClassIsland 上工作。
namestring插件显示名称
descriptionstring插件描述
urlstring插件主页 Url
authorstring插件作者
versionVersion插件版本,如1.0.0.0
iconstring插件图标文件名,默认值为icon.png
readmestring插件自述文件文件名,默认为README.md

以下是一个清单文件的示例:

manifest.yml
id: examples.helloworld  # 插件 id
name: Hello world!  # 插件名称
apiVersion: 2.0.0.0  # 插件面向的 ClassIsland 版本
description: 在启动时弹出一个“Hello world”提示框。  # 插件描述
entranceAssembly: "HelloWorldPlugin.dll"  # 插件入口程序集
url: https://github.com/ClassIsland/ExamplePlugins  # 插件 Url
author: HelloWRC  # 插件作者
version: 1.0.0.0  # 插件版本

继续深入

您可以继续阅读本文档来进一步了解相关 API 的用法,或者查看 GitHub 上的 插件示例。您也可以看看插件功能请求板块来寻找灵感。

`,16))])}const y=e(c,[["render",g]]),b=JSON.parse('{"path":"/dev/plugins/create-project.html","title":"开始编写插件","lang":"zh-CN","frontmatter":{"description":"开始编写插件 本文章将介绍如何创建、调试并运行 ClassIsland 的插件项目。 设置开发环境 在开始之前,您需要按照的指引设置插件开发环境。 创建项目 您可以使用项目模板快速开始开发。 如果您没有安装过模板包,先运行以下命令安装模板包 在 JetBrains Rider 或其它支持的编辑器中中选择此模板创建项目 在 JetBrains Rider...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"开始编写插件\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-12-14T02:59:03.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"ClassIsland 社区\\",\\"url\\":\\"https://classisland.tech\\"}]}"],["meta",{"property":"og:url","content":"https://docs.classisland.tech/dev/plugins/create-project.html"}],["meta",{"property":"og:site_name","content":"ClassIsland 文档"}],["meta",{"property":"og:title","content":"开始编写插件"}],["meta",{"property":"og:description","content":"开始编写插件 本文章将介绍如何创建、调试并运行 ClassIsland 的插件项目。 设置开发环境 在开始之前,您需要按照的指引设置插件开发环境。 创建项目 您可以使用项目模板快速开始开发。 如果您没有安装过模板包,先运行以下命令安装模板包 在 JetBrains Rider 或其它支持的编辑器中中选择此模板创建项目 在 JetBrains Rider..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2025-12-14T02:59:03.000Z"}],["meta",{"property":"article:modified_time","content":"2025-12-14T02:59:03.000Z"}],["link",{"rel":"alternate","hreflang":"en-us","href":"https://docs.classisland.tech/en-us/dev/plugins/create-project.html"}]]},"git":{"createdTime":1721874765000,"updatedTime":1765681143000,"contributors":[{"name":"WRC","username":"WRC","email":"hello_wrc@outlook.com","commits":14,"url":"https://github.com/WRC"},{"name":"Xwei1645","username":"Xwei1645","email":"68677053+Xwei1645@users.noreply.github.com","commits":1,"url":"https://github.com/Xwei1645"}]},"readingTime":{"minutes":2.43,"words":730},"filePathRelative":"dev/plugins/create-project.md","autoDesc":true}');export{y as comp,b as data};