【问题标题】:How to read package.json version in TFS build如何在 TFS 构建中读取 package.json 版本
【发布时间】:2023-04-06 15:23:01
【问题描述】:

我将 TFS 2017 用于 CI,我不想将版本存储在我的 .net 核心项目的 package.json 文件中,我尝试了这个 powershell 脚本:

$SemverVersion = (Get-Content -Raw -Path Path/package.json | ConvertFrom-Json).version 

我在日志中收到此错误:

Get-Content : Impossible de trouver un paramètre positionnel acceptant l'argument «
Le processus s'est achevé avec le code de sortie 0. 1 erreur(s) écrite(s) dans le flux d'erreurs.

有没有其他方法或工具可以在 TFS Build 中读取 package.json 版本?

【问题讨论】:

  • 正在运行什么版本的 PowerShell?我相信这可能是 -raw 参数的问题,该参数直到 PowerShell 3 才添加
  • 我在 TFS 2017 中使用 PowerShell 任务
  • 你能在任务中添加$psversiontable.psversion,看看它运行的是什么版本吗?

标签: json powershell tfs asp.net-core


【解决方案1】:

@BenH 是正确的。请查看this website:

Raw 是文件系统提供程序添加到 获取内容 cmdlet。此参数仅适用于文件系统驱动器。

此参数是在 Windows PowerShell 3.0 中引入的。

在构建代理机器上安装更新版本的Powershell,然后重启构建代理服务,再试一次。

【讨论】:

    【解决方案2】:

    @BenH,这个 powerShell 运行良好:

    (Get-Childitem -Path .\ -Include *package.json* -Recurse -ErrorAction SilentlyContinue | Where {$_.FullName -notlike "*\wwwroot\*"} | Where {$_.FullName -notlike "*\no
    de_modules\*"}| Where {$_.FullName -like "*\release\*"} | Select-Object -First 1).fullName
    >>> $version = (Get-Content $path) -join "`n" | ConvertFrom-Json | Select -ExpandProperty "version"
    >>> Write-Host ("##vso[task.setvariable SemverVersion=$version;]$version")
    

    首先我读取路径并将其存储在$path 变量中,然后将此变量用作Get-Content 中的参数以读取版本并将其存储$version,最后我将$version 设置在SemverVersion env 变量中, 有什么建议可以改善这种反应吗?

    【讨论】:

      【解决方案3】:

      像这样的非一个班轮:

      $jsonFile = Get-Content "package.json"
      $jsonObj = $jsonFile | ConvertFrom-Json
      $versionPrefix = $jsonObj.version
      

      【讨论】:

        猜你喜欢
        • 2018-02-06
        • 2017-08-03
        • 1970-01-01
        • 2016-04-24
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2016-06-18
        • 2015-08-30
        相关资源
        最近更新 更多