Почему переменная $ LastExitCode PowerShell всегда равна 0 после неудачной сборки с MSBuild? - PullRequest
9 голосов
/ 09 апреля 2011

Я заметил, что при сбое MSBuild значение переменной $ LastExitCode всегда равно 0. Я нахожусь на Windows 7, с MSBuild v4.0 и PowerShell 2.0.Это мой сценарий MSBuild:

<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Fail">
    <Target Name="Fail">
        <Error />
    </Target>
</Project>

Когда я запускаю:

msbuild.exe MyProject.csproj

В выводе я вижу, что MSBuild дает сбой, но при проверке $LastExitCode он имеет значениеиз 0. Кто-нибудь знает, что может происходить?

Я пытался установить $(ErrorActionPreference) в Stop, но это не сработало.Я заново открыл новое окно PowerShell, которое тоже не работало.

Ответы [ 2 ]

11 голосов
/ 16 мая 2011

Я недавно столкнулся с проблемой.Оказалось, что в моем профиле есть код, который обновляет $ lastexitcode - код был генератором пользовательских подсказок.Попробуйте запустить powershell без вашего профиля с помощью powershell -noprofile, чтобы проверить, не может ли быть проблема в коде вашего профиля.

Попробуйте проверить значение $?
Его значение false, если $ lastexitcode не равен нулю ...у меня работает даже когда $ lastexitcode нет.

1 голос
/ 08 сентября 2012

$ LASTEXITCODE - для исполняемых файлов win32 и $?для команд PSКакое значение% errorlevel% при запуске msbuild.exe из cmd?

Пожалуйста, прочитайте http://techibee.com/powershell/what-is-lastexitcode-and-in-powershell/1847, если вы хотите узнать больше о разнице между этими двумя специальными переменными.

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