推送NuGet包遇400错误:需注册证书签名,能否发布未签名包?
NuGet未签名包发布相关问题解答
是否能发布未签名的NuGet包?
可以,NuGet.org允许发布未签名的公共包,强制签名并非所有包的必选要求。
你遇到400错误的原因
你触发的error: Response status code does not indicate success: 400 (This package must be signed with a registered certificate.)错误,通常是因为你的包ID属于NuGet.org官方保留的命名空间前缀(比如Microsoft.*、System.*这类官方专属前缀),或者该包ID对应的现有包已被设置为强制签名,导致新提交的同ID包必须使用注册过的证书签名。
未签名包的发布要求
- 包ID需避开NuGet.org的保留前缀,使用专属的唯一前缀(比如包含你的用户名、个人/组织标识,例如
Martinm.Utils) - 包内容符合NuGet.org的内容规范(无恶意代码、附带合规的开源协议等)
- 拥有有效的NuGet.org API密钥(你的请求已通过密钥验证,这一点没问题)
低成本解决思路
既然你每年仅发布一次包,不想承担证书成本,建议直接修改包ID为专属唯一标识,避开保留前缀和已被强制签名的包ID范围,即可正常推送未签名包。
内容的提问来源于stack exchange,提问作者martinm
相关产品推荐
相关产品推荐

