Сбой MSBuild при запуске через Powershell - PullRequest
2 голосов
/ 17 июня 2009

У меня есть сценарий MSBuild, который я хочу вызвать из сценария PowerShell в процессе развертывания. Если я вызываю скрипт сборки через bat-файл, все работает хорошо. Если я делаю то же самое в PowerShell, я получаю ошибку CS1668 при поиске странных и замечательных путей, которых нет на моей машине. Я знаю, что попадаю в сценарий MSBuild, поскольку эти ошибки происходят из-за целей сценария MSBuild (это показано в журнале) Файл bat и сценарий PowerShell находятся в одном месте, рядом со сценарием сборки.

Ошибка:

ошибка CS1668: предупреждение как ошибка: Неверный путь поиска 'C: \ Program Файлы \ Microsoft Visual Studio 8 \ VC \ AtlMfc \ Lib 'указано в' LIB переменная окружения '-' Система не могу найти указанный путь. ' ошибка CS1668: предупреждение как ошибка: Неверный путь поиска 'C: \ Program Файлы \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ Lib ', указанный в «Переменная среды LIB» - «The система не может найти указанный путь. «

Я проверил, и ни один из этих путей НЕ существует на моей машине. Почему запуск из PowerShell изменяет пути, которые ищет MSBuild?

Заранее спасибо

RhysC

EDIT - добавление в коде: NB имя сценария MSBuild - AutomatedDebug.build. СКРИПТ ПОЛОЖЕНИЯ:

#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 ***" 

Файл летучей мыши

@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

Ответы [ 3 ]

2 голосов
/ 17 июня 2009

Хорошо, что на самом деле происходит, так это то, что я скачал Расширения сообщества Powershell (http://pscx.codeplex.com) много месяцев назад, и там есть файл Environment.VisualStudio2005.ps1, который добавляет EnvVars, которых не существует. Я предполагаю), потому что я не использую VS2005. Я закомментировал это, и все хорошо. Я попытался найти эквивалент 2008 года, но мне не повезло. Честно говоря, я не использую PowerShell в полной мере, поэтому я сомневаюсь, что я мне даже нужен PSCX на моей машине.

Спасибо, ребята, за вашу помощь.

0 голосов
/ 17 июня 2009

Мне интересно, в основном вы получаете здесь «Предупреждение как ошибка». Вы можете либо попробовать отключить обработку предупреждений как ошибок (я имею в виду, что путь к библиотеке, который не существует, для меня не звучит , что плохо), либо вы позволите своим сценариям распечатать соответствующую среду. переменные (используя echo %LIB% и $Env:LIB соответственно) из скриптов и ищите различия.

Однако, так как envvars для VS не установлены глобально по умолчанию (вот почему есть три командных приглашения Visual Studio), вы должны установить все переменные где-нибудь. Если вы делаете это в сценариях, у вас может быть где-то опечатка?

0 голосов
/ 17 июня 2009

Скорее всего, это связано с тем, как вы передаете параметры в скрипт MSBuild. Между CMD и PowerShell существуют некоторые ключевые различия при разборе параметров, и, используя пакетный файл, вы неявно используете механизм разбора параметров CMD для передачи параметров в MSBuild. Если вы опубликуете используемую командную строку, один из гуру PowerShell здесь, вероятно, поможет отладить, когда параметры запутываются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...