我正在编写一个带有一些程序集的API,我希望这些程序集以nuget程序包的形式发布(实际上已完成)。
它被分割成:
我想在nuget上释放其中的每一个,但是有些依赖于其他(例如Game依赖于Core,Data,Enums和Packets,Data依赖于Enums ...)
我应该将它们与本地参考链接起来,还是应该将它们的每个链接链接到各自的“远程软件包”? 这是相关API的链接:https://github.com/BlowaXD/ChickenAPI/
答案 0 :(得分:2)
您无需使用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。
答案 1 :(得分:0)
我已经通过Nuget的.nuspec文件成功做到了。
这是我用来构建它的XML
<?xml version="1.0" encoding="utf-16"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>ChickenAPI.Game.Extensions</id>
<version>$(VERSION_OF_CHICKEN_API)</version>
<authors>BlowaXD</authors>
<projectUrl>http://github.com/BlowaXD/ChickenAPI</projectUrl>
<iconUrl>https://raw.githubusercontent.com/BlowaXD/ChickenAPI/develop/docs/_media/logo_256.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>ChickenAPI.Game.Extensions is an collection of useful methods to manage game objects</description>
<summary>ChickenAPI is an API for Nostale Private Servers</summary>
<copyright>Copyright © BlowaXD 2019</copyright>
<language>en-US</language>
<dependencies>
<dependency id="ChickenAPI.Game" version="$(VERSION_OF_CHICKEN_API)" />
</dependencies>
</metadata>
</package>
,这里是我用来构建软件包的命令行:
dotnet pack -c Release src/ChickenAPI.Core --output nupkgs /p:NuspecFile=chickenapi.core.nuspec /p:NuspecBasePath=.
感谢其他declaring nuget packages that depend on each other in one solution个问题。
此拉取请求将显示我如何解决此问题(包含每个详细信息): https://github.com/BlowaXD/ChickenAPI/pull/96