【问题标题】:NuGet Package being marked as prereleaseNuGet 包被标记为预发布
【发布时间】:2019-10-30 21:07:25
【问题描述】:

我已经构建了一个 NuGet 包并将其上传到本地托管的 Sonatype Nexus 存储库。

我给它的版本是0.1.1+251019-020007-e3baff。我对 sem-ver 2.0 的理解是这应该被视为一个稳定/发布版本(因为 + 之后的数据应该只被视为元数据),但 nuget 似乎很困惑并且只有在我包含预发布时才显示它搜索中的版本。

例如,在 cli 中,如果我运行 Find-package <my-package-name>,我不会得到任何结果。但是如果我运行 Find-Package -prerelease <my-package-name> 我会得到

Id                  Versions     Description                                                                                                                                                                                                                                                                          
--                  --------     -----------                                                                                                                                                                                                                                                     
<my-package>        {0.1.1}      <description>

同样,如果我在 Visual Studio 中使用 GUI,我必须检查“包含预发布”选项,但可用的版本被标记为“最新稳定”...

在 Nexus 中有一个标志“is_prerelease”被某些东西设置为 true,不确定是什么,该标志是否设置不正确,然后在搜索中使用?

还有什么我做错了吗?我对 sem-ver 2.0 中+ 字符的理解不正确吗?

我使用的是 NuGet 4.9.3 版,nexus 是 3.19.0-01 版

【问题讨论】:

    标签: nuget nexus


    【解决方案1】:

    NuGet 的逻辑可作为包使用,NuGet.Versioning package 中的版本控制逻辑。使用这个小程序:

    static void Main(string[] args)
    {
        var version = NuGetVersion.Parse("0.1.1+251019-020007-e3baff");
        Console.WriteLine($"Version is prerelease: {version.IsPrerelease}");
    }
    

    我得到了输出

    版本为预发布:False

    我尝试了许多版本的NuGet.Versioning 软件包,从最新的 5.3.1 到 4.9.4、4.3.0、3.5.0、3.2.0,甚至是最旧的软件包发行版本 1.0.1 .他们都说你的版本不是预发布版本。

    因此,不是 NuGet 认为您的包是预发布的。鉴于- 是预发布标签的分隔符,我的猜测是 Nexus 错误地进行了类似于 version.Contains('-') 的简单检查以确定它是否是预发布的。这是一种耻辱,因为 semver.org 在他们的网站上有两个没有这种行为的正则表达式(example,我不知道这个链接的有效期有多长)。如果您的 Nexus 安装没有运行最新版本,我建议您尽可能尝试更新。如果问题仍然存在,您可以尝试联系软件供应商报告错误。

    作为一种解决方法,只要您继续使用 Nexus,就可以尝试避免在构建元数据中使用 - 字符。 SemVer2 允许您使用的字符非常有限,因此我建议改用 . (0.1.1+251019.020007.e3baff)。

    【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2012-05-22
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    相关资源
    最近更新 更多