【问题标题】:Invalid 'PackageVersion' when using 'dotnet pack'使用“dotnet pack”时“PackageVersion”无效
【发布时间】:2022-01-01 19:37:09
【问题描述】:

使用dotnet pack 创建工件时,当我的SemVer 软件包版本中的一个预发布标识符以0 开头时,任务将失败。

这是dotnet pack 的一个已知错误,是否有任何修复方法?

1.0.8-INF-2382.9.088820
Microsoft (R) Build Engine version 16.10.0+4242f381a for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

/usr/share/dotnet/sdk/5.0.300/Sdks/NuGet.Build.Tasks.Pack/build/NuGet.Build.Tasks.Pack.targets(110,5): error MSB4018: The "GetPackOutputItemsTask" task failed unexpectedly. [/home/dgard/repos/ldx-analytics-infrastructure/.jenkins/ldx.analytics.infrastructure/ldx.analytics.infrastructure.csproj]
/usr/share/dotnet/sdk/5.0.300/Sdks/NuGet.Build.Tasks.Pack/build/NuGet.Build.Tasks.Pack.targets(110,5): error MSB4018: System.ArgumentException: PackageVersion string specified '1.0.8-INF-2382.9.088820' is invalid. [/home/dgard/repos/ldx-analytics-infrastructure/.jenkins/ldx.analytics.infrastructure/ldx.analytics.infrastructure.csproj]
/usr/share/dotnet/sdk/5.0.300/Sdks/NuGet.Build.Tasks.Pack/build/NuGet.Build.Tasks.Pack.targets(110,5): error MSB4018:    at NuGet.Build.Tasks.Pack.GetPackOutputItemsTask.Execute() [/home/dgard/repos/ldx-analytics-infrastructure/.jenkins/ldx.analytics.infrastructure/ldx.analytics.infrastructure.csproj]
/usr/share/dotnet/sdk/5.0.300/Sdks/NuGet.Build.Tasks.Pack/build/NuGet.Build.Tasks.Pack.targets(110,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [/home/dgard/repos/ldx-analytics-infrastructure/.jenkins/ldx.analytics.infrastructure/ldx.analytics.infrastructure.csproj]
/usr/share/dotnet/sdk/5.0.300/Sdks/NuGet.Build.Tasks.Pack/build/NuGet.Build.Tasks.Pack.targets(110,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [/home/dgard/repos/ldx-analytics-infrastructure/.jenkins/ldx.analytics.infrastructure/ldx.analytics.infrastructure.csproj]

错误MSB4018 非常通用,但一些谷歌搜索将我引导到NU5024,这表明版本号不符合 SemVer。不过我相信是有效的,网上SemVer checkers似乎也同意。

在这种情况下,导致问题的部分是 088820,这是 Git 提交哈希的前 6 个字符,因此我无法更改。

【问题讨论】:

    标签: semantic-versioning artifact dotnet-cli


    【解决方案1】:

    这里的答案似乎是 dotnet 用于验证 PackageVersion 是有效 SemVer 版本的任何包都存在错误。

    如果使用<dot-separated pre-release identifiers> 并且以下对于点. 之后的任何标识符都是正确的,则该版本被视为无效的SemVer。

    • 0开头。
    • 长度大于一个字符。
    • 不包含任何字母[a-f]

    例如,1.0.8-INF-2382.9.088820 无效,但 1.0.8-INF-2382.9.0888a0 有效。

    在 Python 中导入 SemVer 时也是如此。这失败了 -

    print(semver.VersionInfo.parse(1.0.8-INF-2382.9.088820))
    

    ValueError: 1.0.8-INF-2382.9.088820 不是有效的 SemVer 字符串

    但这行得通-

    print(semver.VersionInfo.parse(1.0.8-INF-2382.9.0888a0))
    

    1.0.8-INF-2382.9.0888a0

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2021-08-29
      • 2022-01-02
      • 2017-10-25
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多