gpt4 book ai didi

nuget-server - NuGet - 禁止覆盖包(具有相同的名称和版本号)

转载 作者:行者123 更新时间:2023-12-02 21:49:38 27 4
gpt4 key购买 nike

我设置了自定义 NuGet server对于我的公司。一切都很好 - 我可以发布、查看包等。

我唯一担心的是我可以发布具有相同名称和版本号的包,从而覆盖现有的包。这并不理想,如果已经存在具有相同名称和版本的包,我希望 NuGet 服务器返回错误。

关于如何实现这一目标有任何线索吗?

最佳答案

我也非常感谢不允许覆盖现有的包。但是,似乎不可能立即使用 NuGet 服务器。一个 similar feature request has been closed about two years ago

但是查看 source code 会打开一些选项。看一下 CreatePackage() 方法。它使用IPackageAuthenticationService来检查是否允许添加指定的包(仅检查API key ),并使用IServerPackageRepository来实际添加包:

// Make sure they can access this package
if (Authenticate(context, apiKey, package.Id))
{
_serverRepository.AddPackage(package);
WriteStatus(context, HttpStatusCode.Created, "");
}

两者都是使用构造函数注入(inject)传递的,因此很容易通过传递自定义实现来扩展行为(为此修改 Ninject bindings )。

乍一看,我会选择自定义的IServerPackageRepository。当前的实现使用IFileSystem.AddFile(...)来添加包。您可以使用IFileSystem.FileExists(...)来检查包是否已经存在。

从持续集成的角度来看,禁止覆盖现有包是完全有意义的,因为 NuGet 遵循 Semantic Versioning 。因此,新版本应该包含错误修复、新功能或重大更改。不过,我会选择允许覆盖快照/预发布。

更新: v2.8 似乎将有一个选项 allowOverrideExistingPackageOnPush ,该选项默认为 true 以实现向后兼容性。它已与 1e7345624d 一起提交。 fork 后我意识到了这一点。看来我又太晚了;-)

关于nuget-server - NuGet - 禁止覆盖包(具有相同的名称和版本号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17607447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com