Как прочитать версию package.json в сборке TFS

Я использую TFS 2017 для CI, я не хочу, чтобы версия хранилась в файле package.json моего основного проекта.net, я попробовал этот скрипт 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.

Есть ли другой способ или инструмент для чтения версии package.json в TFS Build?

3 ответа

Решение

@BenH правильно. Пожалуйста, проверьте этот сайт:

Raw - это динамический параметр, который поставщик FileSystem добавляет в командлет Get-Content. Этот параметр работает только на дисках файловой системы.

Этот параметр представлен в Windows PowerShell 3.0.

Пожалуйста, установите более новую версию Powershell на компьютере агента сборки и перезапустите службу агента сборки, чтобы попробовать еще раз.

@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, есть ли предложение улучшить этот ответ?

Что-то вроде этого как не один лайнер:

      $jsonFile = Get-Content "package.json"
$jsonObj = $jsonFile | ConvertFrom-Json
$versionPrefix = $jsonObj.version
Другие вопросы по тегам