创建插件项目
我们首先需要在VS
中新建一个WinUI
类库
编写默认元数据
默认提供了五个可填写的元数据项
Id
:插件IdName
:插件名称Version
:插件版本Priority
:加载顺序,越小越早加载Dependencies
:插件依赖SdkVersion
: (自动)SDK版本BuiltIn
: (自动)是否为内置插件DllName
: (自动)DLL文件名MainPlugin
: (自动)主插件类型EntryPoints
: (自动)入口点
元数据项(除了Dependencies
)均在plugin.json
中设置
xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>ShadowExample.Plugin.Emoji</RootNamespace>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<UseWinUI>true</UseWinUI>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<NoWarn>MSB3277</NoWarn>
<!-- Nuget -->
<PackageId>ShadowExample.Plugin.Emoji</PackageId>
<PluginName>Emoji插件</PluginName>
<Version>1.0.0.12</Version>
<!-- PluginMeta -->
</PropertyGroup>
</Project>
需要在根目录新建plugin.json
可以使用获取
.csproj
中的变量
Id
必须与PackageId
对应
json
{
"Id": "{{ PackageId }}",
"Name": "{{ PluginName }}",
"Version": "{{ Version }}"
}
元数据项Dependencies
用于指明插件的依赖插件
,让插件在依赖插件
加载后再加载
与常规元数据项不同,需要在.csproj
中的<ItemGroup>
里设置
同时他作为项目的nuget
包
- 必须指明
Label="Dependencies"
- 内部必须指明
Need="(1.0,2.0)"
要求的版本
xml
<ItemGroup Label="Dependencies">
<PackageReference Include="ShadowExample.Plugin.Hello" Version="1.2.1.2" Need="(1.0,2.0)" />
<PackageReference Include="ShadowExample.Plugin.World" Version="1.3.0.0" Need="(1.0,2.0)" />
</ItemGroup>
插件主类
插件主类需要继承插件加载器中的自定义的插件基类
并且必须使用[MainPlugin]
特性指明插件主类,这会自动生成对应的插件元信息
csharp
// 示例的插件主类
namespace ShadowViewer.Plugin.Local;
[MainPlugin]
public partial class LocalPlugin : PluginBase
{
}
TIP
你可以直接使用LocalPlugin.MetaData
来获取插件的元数据信息
后续编写
接下来,你可以选择覆写插件基类中的默认方法
或者