如何向我的 dotnet nuget 包添加自定义许可证?

How can a add a custom license to my dotnet nuget package?

今天,我尝试更新我的 netstandard2.0 class 库,但收到 <PackageLicenseUrl> 元素已弃用的警告。在做了一些研究之后,我将以下几行添加到我的 csproj 文件中:

<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>

<!-- .... -->

<ItemGroup>
    <None Include="..\LICENSE.txt" Pack="true" PackagePath="$(PackageLicenseFile)"/>
</ItemGroup>

后来,我尝试发布包。 dotnet pack 运行没有问题,但对于 dotnet nuget push xxx.1.0.2.nupkg -k xxx -s https://api.nuget.org/v3/index.json 打印以下错误:

信息 : "xxx.1.0.2.nupkg" wired per Push nach "'https://www.nuget.org/api/v2/package'" übertragen...
信息:PUT https://www.nuget.org/api/v2/package/
警告:您的 API 密钥将在 1 天后过期。访问 https://www.nuget.org/account/apikeys 重新生成您的 API 密钥。
信息:错误请求 https://www.nuget.org/api/v2/package/ 1661 毫秒
错误:响应状态代码不表示成功:400(尚不支持许可证文件。)。

总结:

我是不是漏掉了什么?

新的 NuGet 客户端在 NuGetGallery 取消对该功能的支持之前发布。但应该是coming very soon。如果您使用众所周知的许可证,则可以改用 SDPX 表达式,并且 nuget.org 已经接受了。

编辑:nuget.org 现在接受带有许可证文件的包。 Announcement of the new licence feature here.