创建NuGet包时如何正确指定GPL3许可证?
创建NuGet包时正确指定GPL3许可证的方法
字段校验逻辑
NuGet 的 PackageLicenseExpression 字段严格匹配 SPDX 官方许可证标识符的标准字符串,不存在简写、别名的容错空间。常见的无效写法如 GPLv3、GPL3 均不属于 SPDX 列表中的合法值,自然无法被 NuGet.org 识别。
你之前测试可以正常生效的 MIT 写法,正是因为 MIT 是 SPDX 列表中完全匹配的标准标识符,才能顺利通过平台校验。
可选的合法GPL3配置
根据实际采用的授权范围,选择对应的表达式写入 csproj 文件即可:
- 仅授权他人在 GPLv3 单版本条款下使用,不支持升级到后续更高版本 GPL 协议:
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression> - 授权他人在 GPLv3 及后续任意更高版本协议下自由使用(GPL 系列协议最常见的授权形式):
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
注意:SPDX 已将旧版的
GPL-3.0这类非精确写法标记为废弃,哪怕本地打包环节没有报错,上传 NuGet.org 时依然会被合规校验拦截。
内容的提问来源于stack exchange,提问作者O S
相关产品推荐
相关产品推荐

