Skip to content

创建项目

创建项目

我们首先需要在VS中新建一个WinUI类库

本文以名为ShadowExample.Core的项目为例

winui

创建完成后,打开.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 是我们必须的依赖库
    • 最新版本为: NuGet version (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包的一些设置
  • 关于MSBuildnuget的生成可以查看该文章:使用 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)需要给给本体和所有插件提供插件信息,应当包含以下内容: