MioKit.Plugin.Templates
1.1.1
See the version list below for details.
dotnet new install MioKit.Plugin.Templates@1.1.1
MioKit 插件 dotnet 模板
这个包提供两套 dotnet new 项目模板,用来统一创建 MioKit 插件项目。
| 模板 | shortName | 适用场景 |
|---|---|---|
| MioKit Plugin | miokit-plugin |
标准插件,不内置 WebView2 UI |
| MioKit Plugin With WebView2 UI | miokit-plugin-webview2 |
使用 WebView2 + Vue bridge 作为 UI |
安装模板
本地安装
开发或测试模板包时,可以直接从模板包项目目录安装:
dotnet new install .\templates\MioKit.Plugin.Templates --force
也可以从本地 .nupkg 安装:
dotnet new install .\PublishNuget\nupkgs\MioKit.Plugin.Templates.1.0.0.nupkg --force
在线安装(NuGet 发布后)
模板包发布到 NuGet 后,使用包 ID 在线安装:
dotnet new install MioKit.Plugin.Templates
安装指定版本:
dotnet new install MioKit.Plugin.Templates::1.0.0
更新模板:
dotnet new update
卸载模板:
dotnet new uninstall MioKit.Plugin.Templates
查看模板
dotnet new list miokit
查看标准插件模板参数:
dotnet new miokit-plugin -h
查看 WebView2 插件模板参数:
dotnet new miokit-plugin-webview2 -h
创建标准插件
# -n 含 '.' 时,plugin.json 的 name 默认取最后一段(如 MioKit.Clipboard → Clipboard)
dotnet new miokit-plugin -n MioKit.Clipboard `
--pluginId com.example.plugin.clipboard `
--description "剪贴板插件" `
--pluginAuthor "your-name"
# 也可显式指定显示名称
dotnet new miokit-plugin -n MioKit.Clipboard --displayName "剪贴板"
创建 WebView2 插件
dotnet new miokit-plugin-webview2 -n MyWebPlugin `
--pluginId com.example.plugin.my-web-plugin `
--displayName "我的 Web 插件" `
--description "使用 WebView2 UI 的 MioKit 插件" `
--pluginAuthor "your-name"
WebView2 模板已内置 vue-ui/(内容来自 miokit-ui-template),dotnet new 后即可开发,无需额外克隆或初始化脚本。
前置步骤:安装 Agent skills
从 0.2.0 起,插件开发相关 Agent skills 不再随模板生成到项目内,而是通过独立 NuGet 包 MioKit.Plugin.Skills 安装到全局目录。
# 从 MioKit 仓库运行(或从 nupkg 的 tools/update-skills.ps1)
.\MioKit.Plugin.Skills\scripts\update-skills.ps1
# 指定 NuGet 源
.\MioKit.Plugin.Skills\scripts\update-skills.ps1 -Source "http://47.93.102.125:6688/v3/index.json"
安装后 skills 位于 %USERPROFILE%\.agents\skills\(含 miokit-plugin-development、miokit-plugin-new)。WebView2 模板内的 vue-ui/.agents/skills/miokit-ui-template 仍随模板内置。
首次开发前安装依赖:
cd plugin/vue-ui
pnpm install
前端开发:
cd plugin/vue-ui
pnpm dev
前端发布构建:
cd plugin/vue-ui
pnpm build
模板参数
两套模板支持相同的业务参数。
| 参数 | 默认值 | 说明 |
|---|---|---|
-n, --name |
当前目录名 | 项目/程序集名(可含 .,如 MioKit.Demo);C# 类型前缀取最后一个 . 后片段 |
-o, --output |
当前目录 | 输出目录 |
--pluginId |
标准插件:com.example.plugin.miokit-plugin;WebView2:com.example.plugin.miokit-webview2-plugin |
插件全局唯一 ID,必须与 plugin.json、PluginBase、Autofac keyed registration 一致 |
--displayName |
默认:-n 中最后一个 . 之后的片段;无 . 时为完整项目名 |
plugin.json 中的显示名称;可用 --displayName 覆盖 |
--description |
按模板类型不同 | plugin.json 中的插件描述 |
--pluginAuthor |
your-name |
plugin.json 中的作者 |
模板会自动生成插件根类型 Guid:
| 生成项 | 用途 |
|---|---|
pluginTypeId |
插件根对象 EAV 类型 ID |
搜索组、节点类型与示例数据不在模板中生成;请按全局 miokit-plugin-development skill(%USERPROFILE%\.agents\skills\miokit-plugin-development\)添加。
生成后的目录结构
两套模板都会生成解决方案、插件项目与预览宿主:
MyPlugin/
├── MyPlugin.slnx
├── pack.ps1
├── publish.ps1
├── plugin/
│ ├── docs/
│ │ ├── requirements.md
│ │ ├── lifecycle.md
│ │ └── features-and-properties.md
│ ├── Properties/
│ │ ├── _global.cs
│ │ └── AssemblyInfo.cs
│ ├── MyPlugin.csproj
│ ├── MyPluginConst.cs
│ ├── MyPluginPlugin.cs
│ ├── MyPluginRegister.cs
│ └── plugin.json
├── preview/
└── Publish/
模板不再用 README.md 强行占位空目录。业务代码按需创建以下常用目录:
plugin/
├── Assets/ # icon、图片、静态资源
├── Features/ # IMyFeature.cs + IMyFeature.Extensions.cs
├── Models/ # DTO、配置、缓存记录
├── Nodes/ # MioObject 搜索组、可执行节点、树结构
├── Services/ # 扫描、同步、缓存、桥接等服务
└── Views/ # Avalonia/WebView2 视图
WebView2 模板额外包含:
MyWebPlugin/
└── plugin/
├── vue-ui/ # Vue 3 前端源码,随模板发布
├── ui/dist/ # pnpm build 输出,构建后生成
├── docs/webview2-ui.md
├── Services/TimerJsService.cs
├── Services/HotKeyCaptureJsService.cs
└── Views/PluginWebView.axaml
关键文件
Properties/_global.cs
集中放置全局 using,包括:
global using MioKit.Sdk;
global using Autofac;
global using Microsoft.Extensions.DependencyInjection;
WebView2 模板还会额外包含:
global using Avalonia.Controls;
global using CommunityToolkit.Mvvm.ComponentModel;
global using MioKit.Webview2.Core;
Properties/AssemblyInfo.cs
配置 Avalonia XAML 命名空间:
using Avalonia.Metadata;
[assembly: XmlnsDefinition("https://github.com/tiny-isle/MioKit", "MioKit.Framework.Controls")]
[assembly: XmlnsDefinition("https://github.com/tiny-isle/MioKit", "MioKit.Framework.UserControls")]
[assembly: XmlnsPrefix("https://github.com/tiny-isle/MioKit", "mio")]
plugin.json
模板会根据参数生成插件元数据:
{
"metadataVersion": "1.0",
"id": "com.example.plugin.my-plugin",
"name": "我的插件",
"description": "# 我的插件\n\n这里可填写 **Markdown** 使用说明。",
"assembly": "MyPlugin.dll",
"minSdkVersion": "2.0.0",
"nugetDependents": []
}
pluginVersion、releaseState、releaseDate 禁止写入清单。NuGet PackageVersion 是唯一版本来源,其 SemVer 后缀决定正式/预发布状态。
配置 plugin.json.icon 时,模板会同步生成 NuGet PackageIcon 元数据;图标文件仍需按同一路径复制并 Pack。只有文件存在但 nuspec 没有 icon 时,NuGet 目录不会生成可供商店使用的 iconUrl。
pack.ps1 / publish.ps1
模板提供可继续定制的初始脚本:
.\pack.ps1 -PackageId Example.MioKit.MyPlugin -PackageVersion 1.2.0
.\publish.ps1 -PackageId Example.MioKit.MyPlugin -PackageVersion 1.3.0-beta.1 -PackFirst
打包脚本会检查入口 DLL、plugin.json、声明资源、宿主 DLL、nuspec JSON 信封,以及 nuspec icon 与清单图标路径的一致性。发布脚本按 Process → User → Machine 读取 miokit-nuget-apikey、miokit-nuget-name、miokit-nuget-url,且不修改全局 NuGet 配置。
打包模板与 skills
| 包 | 内容 |
|---|---|
MioKit.Plugin.Templates |
dotnet new 模板骨架 |
MioKit.Plugin.Skills |
Agent skills(MioKit.Plugin.Skills/skills/) |
# 仅打包模板包
.\PublishNuget\scripts\pack.ps1 -Projects MioKit.Plugin.Templates
# 仅打包 skills 包
.\PublishNuget\scripts\pack.ps1 -Projects MioKit.Plugin.Skills
# 打包全部
.\PublishNuget\scripts\pack.ps1
版本号在 PublishNuget/versions.json 中维护;输出默认在 PublishNuget/nupkgs/。
发布到 NuGet:
.\PublishNuget\scripts\publish.ps1 -Projects MioKit.Plugin.Templates,MioKit.Plugin.Skills
生成的包示例:
PublishNuget/nupkgs/MioKit.Plugin.Templates.1.0.0.nupkg
发布到 NuGet 前检查
发布前建议确认:
- 已用
PublishNuget打包 dotnet new install <nupkg> --force可以安装成功dotnet new list miokit能看到两个模板dotnet new miokit-plugin ...能生成标准插件dotnet new miokit-plugin-webview2 ...能生成 WebView2 插件- 两种生成项目都可以
dotnet build plugin.json中的id、name、assembly替换正确- NuGet
PackageVersion与PackageId是唯一包身份来源;不要在plugin.json重复维护它们 - 稳定/预发布状态只由发布者传入的 NuGet SemVer 决定
- 生成项目根目录含可用的
pack.ps1与publish.ps1 Properties/_global.cs和Properties/AssemblyInfo.cs存在- 文档中的推荐目录结构与模板实际输出一致
update-skills.ps1可将MioKit.Plugin.Skills安装到%USERPROFILE%\.agents\skills
版本约定
包版本以各模板生成项目中的 *.csproj 的 PackageReference 为准,与 MioKit.Plugin.Templates 一同发布;skill 文档(nuget.md 等)不单独维护版本号表。
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0 | 49 | 8/22/2026 |
| 1.2.0-beta.1 | 39 | 8/22/2026 |
| 1.1.1 | 49 | 8/19/2026 |