发布 NuGet 包
中级
本指南介绍如何发布和共享 Stride 包。
设置
在发布包之前,必须先对其进行正确的设置,以便它能与 Stride 和 C# 配合工作。
更改元数据
你需要更改包的元数据,以便将其发布到互联网上。
在解决方案资源管理器面板中,右键单击你的包,然后选择 Properties(属性)。

在 Package 选项卡中,填写所有需要的字段。

Warning
为避免出现问题,包 ID 必须与 .csproj 文件的名称相同。
有关如何正确填写元数据的更多信息,请访问 Microsoft 文档。
添加模块初始化器
如果 Stride 无法加载你的自定义包,你需要使用**模块初始化器(module initializer)**手动注册它。
为此,在包的根目录中创建一个 Module.cs 文件,并加入以下代码:
using Stride.Core.Reflection;
using Stride.Core;
using System.Reflection;
namespace MyNamespaceHere;
internal class Module
{
[ModuleInitializer]
public static void Initialize()
{
AssemblyRegistry.Register(typeof(Module).GetTypeInfo().Assembly, AssemblyCommonCategories.Assets);
}
}
检查 .sdpkg 文件
Note
如果你的包没有 .sdpkg 文件且只包含代码,可以跳过这一步。
.sdpkg 文件的名称必须与包 ID 以及 .csproj 文件的名称完全一致。如果名称不正确,引擎将不会加载它,进而导致其资产无法加载。
包含资产和资源
Note
如果你的包没有 .sdpkg 文件且只包含代码,可以跳过这一步。
如果没有正确设置,打包过程会忽略所有非代码内容。
要让 NuGet 将 Stride 文件包含进包中,你需要修改包的 .csproj 文件并加入以下几行:
<ItemGroup>
<None Include="*.sdpkg" Pack="true" PackagePath="stride"/>
<None Include="Assets/*.*" Pack="true" PackagePath="stride/Assets"/>
<None Include="Resources/*.*" Pack="true" PackagePath="stride/Resources"/>
<None Include="Effects/*.*" Pack="true" PackagePath="stride/Effects"/>
</ItemGroup>
说明
<None> 项告诉 C# 不要把 Include 中指定的文件当作代码处理。C# 本来也是这样做的,但通过显式声明,我们可以设置额外的参数。这包括将 Pack 设为 true,从而把这些项作为普通文件包含进包中,以及指定 PackagePath,确保它们被放在包内正确的目录中。
Note
如果你的包在 Assets、Resources 和 Effects 之外还包含其他目录,请务必为它们分别创建条目。
打包
正确设置好包之后,你就可以打包它来生成 .nupkg 文件,从而方便地与他人共享。
开始之前,先将项目的配置改为 Release。

接着,在解决方案资源管理器面板中右键单击该包,然后选择 Pack。

过程完成后,.nupkg 文件将生成在 /packageLocation/bin/Release 中。
检查包内容
你可以使用 nuget.info(一个用于检查 .nupkg 文件的网站)来检查包的内容是否正确生成。

需要注意的事项:
- 确保所有与 Stride 相关的内容都位于
stride文件夹中。 - 确保
.sdpkg文件位于 ~/stride 中,且其名称与包 ID 一致。
发布你的包
你可以直接在 nuget.org 网站上发布你的包,也可以使用 dotnet 或 nuget 等命令发布。