У меня есть сценарий MSBuild, который я хочу вызвать из сценария PowerShell как часть процесса развертывания. Если я вызываю скрипт сборки через файл bat, все работает хорошо. Если я сделаю то же самое в PowerShell, я получаю ошибку CS1668 для поиска странных и замечательных путей, которые не существуют на моей машине. Я знаю, что я попадаю в сценарий MSBuild, поскольку эти ошибки происходят из-за целей сценария MSBuild (это показывает вывод журнала). Файл bat и сценарий PowerShell находятся в том же месте, рядом с скриптом сборки.MSBuild не работает при запуске через Powershell
Ошибки:
ошибка CS1668: Предупреждение как ошибка: Неверный путь поиска 'C: \ Program Files \ Microsoft Visual Studio \ VC \ AtlMfc \ Lib' указан в «LIB переменная среды '-' Система не может найти указанный путь. ' ошибка CS1668: предупреждение как ошибка: Неверный путь поиска 'C: \ Program Files \ Microsoft Visual Studio \ VC \ PlatformSDK \ Lib' указан в 'переменной окружения LIB' -' Система не может найти путь указан. '
Я проверил, и ни один из этих путей не существует на моей машине. Почему запуск с PowerShell изменит пути, которые ищет MSBuild?
Заранее спасибо
RhysC
Edit- добавление в код: NB имя сценария MSBuild является AutomatedDebug.build Powershell SCRIPT:
#Begining of script
$CurrentPath = Split-Path (Split-Path $myinvocation.mycommand.path)
#Assign the Build script paths. 1 is for building and testsing, 1 is for deployment (to keep things clean)
$MSBuildScriptBuildAndTestPath = $CurrentPath + "\Tools\AutomatedDebug.build"
$MSBuildScriptDeployPath = $CurrentPath + "\Tools\Deploy.build"
#Run the automated build with tests
Write-Host "*** Run the automated build with tests ***"
C:\Windows\Microsoft.NET\Framework\v3.5\MSbuild.exe $MSBuildScriptBuildAndTestPath "/t:AllTests" "/l:FileLogger,Microsoft.Build.Engine;logfile=AllTests.log"
if($LastExitCode -ne 0)
{
throw "AllTests failed"
}
Write-Host "*** FINISHED: Run the automated build with tests ***"
Bat Файл
@C:\Windows\Microsoft.NET\Framework\v3.5\MSbuild.exe AutomatedDebug.build /t:AllTests /l:FileLogger,Microsoft.Build.Engine;logfile="AllTests.log"
@pause
enter code here
Я уверен, что это не параметры, потому что есть только цель сборки и логгер, определенные из которых принимаются, когда цель запущена, и она отображается в указанном файле журнала. спасибо. – RhysC
Поскольку ошибки касаются содержимого переменных среды, использующих cmd или powershell, здесь не должно быть никакого значения. Анализ в оболочке не имеет ничего общего с envvars, поскольку они просто копируются в порожденный процесс. – Joey
Я знаю, что у меня ничего не получается, но я предположил, что это путь, который можно переписать в любом виде. Johannes; вы говорите, что они должны быть одинаковыми? какие-либо идеи, почему его неудача? – RhysC