Skip to content

手动构建

如果你想要抢先体验未发布的新功能,给项目做贡献,或者你需要开发插件,您可以使用源码库的代码进行手动构建并部署。



术语统一

在接下来的内容中,为了预防理解困难,再次介绍各术语和其对应的项目

  • CoreAPIAPI本体sharwapi.Core :均指代 API框架本体 ,仅包含负责插件加载、路由注册等底层任务代码
  • Contracts接口层Contracts.Core : 均指代 定义插件与核心框架之间通信的接口 ,插件需要实现 IApiPlugin 接口,核心框架通过此接口与插件进行交互

而命令行中则统一使用Linux的文件分隔符(/)

准备步骤

为了构建项目,你需要先准备以下工具:

并且新建一个解决方案文件(.sln),命令如下

mkdir sharwapi
cd sharwapi
dotnet new sln --name sharwapi

至此你的准备工作已经完成,接下来可以进行API本体(CoreAPI)的构建

API本体(CoreAPI)的代码拉取

在刚刚新建解决方案文件的目录,输入以下命令即可拉取代码

bash
$ git clone https://github.com/sharwapi/sharwapi.Core.git
bash
$ git clone git@github.com:sharwapi/sharwapi.Core.git

随后将拉取下来的源码添加到解决方案中

bash
$ dotnet sln sharwapi.sln add sharwapi.Core/sharwapi.Core.csproj

接下来你可以继续对接口层的拉取

接口层的代码拉取

接口的简短介绍

在介绍中虽然并没有介绍接口层,但是其是作为API本体(CoreAPI)与插件(Plugin)沟通的渠道。插件实现了这个接口才能被API识别到,并正常加载。API也依赖于这个接口层才能正常运行。接口层将在后续的架构一章中详细介绍

在刚刚新建的解决方案文件的目录中,输入以下命令即可拉取代码

bash
$ git clone https://github.com/sharwapi/sharwapi.Contracts.Core.git
bash
$ git clone git@github.com:sharwapi/sharwapi.Contracts.Core.git

随后将拉取下来的源码添加到解决方案中

bash
$ dotnet sln sharwapi.sln add sharwapi.Contracts.Core/sharwapi.Contracts.Core.csproj

至此,API本体(Core API)的代码拉取完毕,你可以往下开始构建,或是进入插件一节开始你的插件开发

API本体构建

在构建之前,请先确保 API本体(CoreAPI)接口层(Contracts.Core) 位于你的解决方案中。

1. 发布项目

执行如下命令对 API 本体进行发布构建:

bash
dotnet publish sharwapi.Core/sharwapi.Core.csproj -c Release

2. 获取构建产物

构建完成后,你可以在 ./sharwapi.Core/bin/Release/net9.0/publish 目录中找到编译好的程序文件。

3. 运行

进入发布目录并运行 API 本体:

bash
cd ./sharwapi.Core/bin/Release/net9.0/publish
dotnet sharwapi.Core.dll

插件构建

在此使用官方提供的API Manager插件进行演示

在刚刚新建的解决方案文件的目录中,输入以下命令即可拉取插件代码

bash
$ git clone https://github.com/sharwapi/sharwapi.Plugin.apimgr.git
bash
$ git clone git@github.com:sharwapi/sharwapi.Plugin.apimgr.git

随后将拉取下来的源码添加到解决方案中

bash
$ dotnet sln sharwapi.sln add sharwapi.Plugin.apimgr/sharwapi.Plugin.apimgr.csproj

随后执行如下命令进行发布

bash
dotnet publish sharwapi.Plugin.apimgr/sharwapi.Plugin.apimgr.csproj -c Release

随后你应该能在 ./sharwapi.Plugin.apimgr/bin/Release/net9.0/publish 中看到编译出来的 sharwapi.Plugin.apimgr.dll

将编译出来的 sharwapi.Plugin.apimgr.dll 放入 ./sharwapi.Core/bin/Release/net9.0/publish/Plugins (即 API本体 目录下的 Plugins 文件夹内)

再运行 API本体 ,若看到类似下文的提示,你的插件就载入完成了

bash
Loading plugin: {Name} {Version}