如何在TFS构建中读取package.json版本

时间:2018-01-09 15:00:22

标签: json powershell tfs asp.net-core tfs2017

我正在使用TFS 2017 for 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版本?

2 个答案:

答案 0 :(得分:1)

@BenH是正确的。请检查this website

  

Raw是FileSystem提供程序添加到的动态参数   Get-Content cmdlet。此参数仅适用于文件系统驱动器。

     

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

请在构建代理计算机上安装较新版本的Powershell ,然后重新启动构建代理服务,再试一次。

答案 1 :(得分:0)

@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 varible中,然后使用此变量作为Get-Content中的参数来读取版本并将其存储$version,最后我将$version设置为SemverVersion env变量, 有什么建议可以改善这种反应吗?