快速上手
搭建插件项目
插件就是一个普通的 .NET 类库,目标框架和宿主应用一致(net10.0-windows),引用 PluginSdk:
xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<AssemblyName>YourCompany.Plugins.YourPlugin</AssemblyName>
<Version>1.0.0</Version>
</PropertyGroup>
<ItemGroup>
<!-- 引用你 SwiftList 安装目录下的 SwiftList.PluginSdk.dll;如果是在 SwiftList 仓库内部构建,
也可以直接引用 PluginSdk.csproj。 -->
<ProjectReference Include="..\..\PluginSdk\PluginSdk.csproj" />
</ItemGroup>
</Project>只有当插件自己要渲染 WPF 界面(自定义预览、主题资源字典等)时才需要 UseWPF——纯搜索源逻辑的插件不需要它。
实现 IPlugin
每个插件都有且只有一个入口点,实现 IPlugin:
csharp
public class YourPlugin : IPlugin
{
public string Name => "Your Plugin";
}在此基础上,按需实现其他接口——完整列表见插件 SDK 参考。大多数真实插件会实现 IPlugin 再加一两个其他接口 (CoreExtensionsPlugin 实现了 IPlugin、IActionProvider 和 IConfigurable;参见插件示例)。
加载插件
编译插件,把生成的 DLL 复制到 SwiftList App 的 Plugins/ 文件夹(与 SwiftList.App.exe 同级) ——App 启动时会扫描这个文件夹并加载找到的每一个插件程序集。这一步如何在构建时自动完成,见打包与发布。
调试
在插件里全程使用 PluginSdk 提供的 Logger.Log(message, level)——它的输出会出现在 设置 → 运行状态 的 App 日志 Tab 里,和宿主应用自己的日志一样可以按等级过滤、按关键词搜索。