Nuget 预发布包可以在 Artifactory 上被覆盖吗?

Can Nuget prerelease packages be overwritten on Artifactory?

Nuget 包是不可变的。所有文档都非常清楚这一点。

我正在调查我的内部 Nuget 服务器上的一个问题,预发布包可能会被覆盖。通常,当尝试上传一个已有版本的包时,上传会失败。有问题的 Nuget 服务器是一个 Artifactory 服务器。

我立即认为这是一个错误,但在搜索其他遇到相同问题的人时,我却发现有人暗示这是正常的帖子。

This person asks how to always get the latest version when repeatedly publishing v1.0.0-prerelease.

This person found an Artifactory bug where prerelease packages can't be overwritten if they have a dot in the name.

Another Artifactory bug where STABLE packages can be overwritten because they are incorrectly identified as prerelease

我还没有找到任何实际文档说明可以在 Nuget 或 Artifactory 上覆盖预发布包。我没想到,但那些帖子把它当成了事实!

经过更多的研究和测试,结论是这似乎是 Artifactory 的一个未记录的特性

他们最接近记录的是这里: https://www.jfrog.com/confluence/display/RTF/Managing+Permissions#ManagingPermissions-PreventingOverwritingDeployments

You can prevent a user or group from overwriting a deployed release or unique snapshot by not granting the Delete permission. Non-unique snapshots can always be overwritten (provided the Deploy permission is granted).

文档的该部分并不特定于任何类型的存储库。从未在任何地方明确说明 Nuget 预发布包被视为 "snapshots",但术语 "prerelease" 和 "unstable" 未在文档中的任何地方使用(对于任何存储库类型)。

由于无法关闭此功能,我的团队继续为预发布包使用自动生成的版本控制,以避免因包覆盖而引起的问题。

nuget.org 不允许覆盖预发布包。