我正在编写一个带有一些程序集的API,我希望这些程序集以nuget程序包的形式发布(实际上已完成)。
分成两部分:
ChickenAPI.Core(与应用程序,记录器,IoC容器,一些数学工具,抽象的事件管道等“核心”相关的事物)
ChickenAPI.Data(所有数据访问层,DTO和抽象的“存储库”)
ChickenAPI.Enums(所有游戏枚举)
ChickenAPI.Game(所有与游戏相关的事物,游戏实体,组件,事件...)
ChickenAPI.Packets(游戏使用的所有数据包结构)
我想在nuget上释放其中的每一个,但其中一些依赖于其他(例如,游戏依赖于Core,Data,Enums和Packets,Data依赖于Enums ...)
我应该将它们与本地参考链接起来,还是应该将它们的每个链接链接到各自的“远程软件包”?
这是相关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中的更改。