我正在编写一个 API,其中包含一些程序集,我将这些程序集作为 nuget 包发布(实际上已经完成)。
它被 split 了:
- ChickenAPI.Core(应用程序、记录器、IoC 容器、一些数学实用程序、抽象事件管道的“核心”相关内容...)
- ChickenAPI.Data(所有数据访问层、DTO 和抽象“存储库”)
- ChickenAPI.Enums(所有游戏枚举)
- ChickenAPI.Game(所有与游戏相关的事物、游戏实体、组件、事件...)
- ChickenAPI.Packets(游戏使用的所有数据包结构)
我想在 nuget 上发布其中的每一个,但有些依赖于其他一些(例如游戏依赖于核心、数据、枚举和数据包,数据依赖于枚举...)
我应该将它们链接到本地引用,还是应该将它们的每个链接链接到各自的“远程包”? 相关API链接如下:https://github.com/BlowaXD/ChickenAPI/
最佳答案
您不需要使用 nuspec 文件来执行此操作 - 常规 .NET Core SDK 项目文件可以正常工作。
使用<ProjectReference>
从一个项目引用另一个项目,这将成为 NuGet 包中依赖项的一部分。
例如:
ChickenApi.Core.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- TODO: Extra NuGet properties, e.g. Description, Authors -->
<Version>1.0</Version>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
ChickenApi.Game.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- TODO: Extra NuGet properties, e.g. Description, Authors -->
<Version>1.0</Version>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ChickenApi.Core\ChickenApi.Core.csproj" />
</ItemGroup>
</Project>
如果你运行dotnet pack -c Release
在解决方案上,这将创建两个 nupkg
文件,每个项目一个。只需发布这两个包,一切都会好起来的。
需要注意的一件事是,如果您更改 ChickenApi.Core
然后依赖 ChickenApi.Game
中的这些更改,您必须发布这两个软件包(带有更新的版本号)。很容易忘记更改 ChickenApi.Core
的版本,并发布新版本ChickenApi.Game
声称它仍然引用 1.0,但取决于发布 1.0 中未包含的更改。
关于c# - 发布引用其他程序集的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55232048/