Ниже представлен набор команд, которые я написал для файла bat для создания своего решения.
@ECHO OFF
SETLOCAL
SET msbuildPath="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe"
IF NOT EXIST %msbuildPath% SET msbuildPath="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe"
IF NOT EXIST %msbuildPath% SET msbuildPath="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"
IF NOT EXIST %msbuildPath% SET msbuildPath="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe"
IF NOT EXIST %msbuildPath% SET msbuildPath="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe"
@ECHO on
%msbuildPath% %~dp0/../core-localization.sln /t:restore;build /p:Configuration=Release /v:m
set buildexitcode=%errorlevel%
@ECHO ...
@ECHO SCRIPT RUN: %~n0%~x0
@ECHO OFF
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a:%%b)
@ECHO ON
@ECHO DATE/ TIME: %mydate% %mytime%
@ECHO OFF
EXIT /B %errorlevel%
И я пытаюсь вызвать это с помощью PowerShell и Jenkins на экземпляре EC2. ниже кода PowerShell я использую на этапе jenkins для выполнения:
"\$out = Invoke-Command -ScriptBlock { cmd.exe /c \"cd C:\\Bitbucket\\core-local\\tools\\ & resource_sync_build_release.bat\" *> c:\\buildlog.txt; return \$LASTEXITCODE }"
Когда я выполняю тот же файл bat локально на экземпляре, он успешно создает решение. Однако, когда я пытаюсь запустить то же самое из Jenkins, он выходит с кодом 1 с сообщениями ниже:
C: \ Bitbucket \ core-local \ tools> "C: \ Program Файлы (x86) \ Microsoft Visual Studio \ 2019 \ BuildTools \ MSBuild \ Current \ Bin \ MSBuild.exe "C: \ Bitbucket \ core-local \ tools /../ core-local.sln / t: restore; build / p: Configuration = Release / v: m
Microsoft (R) Build Engine версии 16.4.0 + e901037fe для. NET Framework
Copyright (C) Корпорация Microsoft. Все права защищены.
Восстановление завершено за 45,41 мс для C: \ Bitbucket \ core-local \ src \ resource \ resource.csproj.
CS C: ошибка CS0006: метаданные файл 'C: \ Windows \ system32 \ config \ systemprofile.nuget \ packages \ xliff.om \ 1.0.2 \ lib \ portable-net45 + sl50 + win + wpa81 + wp80 \ Xliff.OM.dll' не может быть найдено [C: \ Bitbucket \ core-local \ src \ resource \ resource.csproj]
CS C: ошибка CS0006: файл метаданных 'C: \ Windows \ system32 \ config \ systemprofile .nuget \ packages \ yamldotnet \ 8.1.0 \ lib \ net45 \ YamlDo tNet .dll 'не может быть найден [C: \ Bitbucket \ core-local \ src \ resource \ resource.csproj]
C: \ Bitbucket \ core-local \ tools> установить buildexitcode = 1
...
ЗАПУСК СКРИПТА: resource_sync_build_release.bat
ДАТА / ВРЕМЯ: 2020-05-27 10:28
Пожалуйста, помогите мне решить проблему.