创建工程文件夹,打开命令行,并执行以下命令
dotnet new bep6plugin_unity_il2cpp -n MyFirstPlugin
dotnet restore MyFirstPlugin 该命令会创建 MyFirstPlugin 文件夹,并生成:
Plugin.cs: 插件源文件(可以简单看一下格式,后面其实用不到)
MyFirstPlugin.csproj: 工程配置文件
用 IDE 打开 MyFirstPlugin.csproj 或者整个工程文件夹

Plugin.cs

BepInPlugin 属性主要参数
当你第一次运行BepInEx时,会dump出的游戏库文件(实际上调用了Il2CppInterop或者Cpp2IL)。这些库文件可以使用 dnspy 或者 ILspy 进行反汇编,可以查看 dll 中的类以及函数名以及相应的偏移。当我们有一个dll文件的符号表以及函数偏移后就能够告诉编译器如何调用其中的函数了。所以我们可以将这些库文件作为我们工程的依赖文件,来调用游戏库中的函数。
Dump 出的游戏库文件默认在 BepInEx/interop 下(老版本的bepinex为BepInEx/unhollow)。

项目依赖
在工程中添加这些依赖,一般用到的也就如上图所示,也有一些游戏会选择将 script 按模块编译到不同 dll 中,看具体情况。
至此如果一切顺利,项目的依赖如上图,可能需要手动安装 Package,可以去repo找相应的版本然后安装。repo网址为 https://nuget.bepinex.dev/
可以右键引用打开其属性窗口,设置 copy local 为否,防止将游戏库文件拷贝到生成目录中。

引用的属性设置
打开工程配置文件,添加如下条目,可以在每次编译完成时将产生的mod文件直接拷贝到 plugins下。注意需要自行修改plugins的路径。

拷贝文件
https://docs.bepinex.dev/master/articles/dev_guide/plugin_tutorial/1_setup.html