创建项目
创建项目
我们首先需要在VS
中新建一个WinUI
类库
本文以名为ShadowExample.Core
的项目为例
创建完成后,打开.csproj
文件,添加以下代码
xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>ShadowExample.Core</RootNamespace>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<UseWinUI>true</UseWinUI>
<NoWarn>MSB3277</NoWarn>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!-- Nuget -->
<Version>1.0.0.34</Version>
<PackageId>ShadowExample.Core</PackageId>
<Authors>kitUIN</Authors>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/kitUIN/ShadowPluginLoader.WinUI</PackageProjectUrl>
<RepositoryUrl>https://github.com/kitUIN/ShadowPluginLoader.WinUI</RepositoryUrl>
<Description>✨ ShadowExample.Core ✨</Description>
<Copyright>Copyright 2024</Copyright>
<PackageTags>kitUIN;wasdk;plugin-loader;plugin;extension;winui</PackageTags>
<PackageOutputPath>..\NugetPackages</PackageOutputPath>
<!-- <PackageReadmeFile>README.md</PackageReadmeFile> -->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.4.230913002" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.755" />
<PackageReference Include="ShadowPluginLoader.WinUI" Version="<填写最新版本>" />
</ItemGroup>
</Project>
其中:
CopyLocalLockFileAssemblies
是导出依赖库中的文件,这是为了防止预生成元数据时找不到对应的库ShadowPluginLoader.WinUI
是我们必须的依赖库GeneratePackageOnBuild
设置为true
将会自动在构建时打包为nuget
包Version
即为程序/nuget的版本号PackageId
即为nuget包的包名Authors
即为nuget包的作者PackageLicenseExpression
即为nuget包的许可证PackageProjectUrl
即为nuget包的项目地址RepositoryUrl
即为nuget包的仓库地址Description
即为nuget包的描述Copyright
即为nuget包的版权PackageTags
即为nuget包的标签PackageOutputPath
即为nuget包的输出路径
说明
<!-- Nuget -->
下方的是生成nuget
包的一些设置- 关于
MSBuild
中nuget
的生成可以查看该文章:使用 MSBuild 创建 NuGet 包 - 一些可以使用的MSBuild属性可以查看该文章:包目标
创建完项目之后,我们可以直接构建
一下,在本目录会出现一个Tools.Config.props
文件
说明
关于Tools.Config.props
文件,可查阅: Tools.Config.props
将其中的<IsPluginLoader>
设置为true
,标明本项目是一个插件加载器项目
xml
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Whether the current project is a PluginLoader -->
<IsPluginLoader>true</IsPluginLoader>
<!-- Whether the current project is a Plugin -->
<IsPlugin>false</IsPlugin>
<!-- Auto Pack Plugin -->
<AutoPluginPackage>true</AutoPluginPackage>
<!-- Auto Generate I18N -->
<AutoGenerateI18N>true</AutoGenerateI18N>
</PropertyGroup>
</Project>
内容
你的PluginLoader
库(可以称为SDK
)需要给给本体和所有插件提供插件信息,应当包含以下内容:
- 插件元数据类
- 插件基类
- 插件加载器类
- 自定义插件加载逻辑
- 使用I18N(国际化)