Удостаивание кодов выхода от пакетных файлов вызывается msbuild

Вы можете попробовать это:

  1. Откройте « Диспетчер виртуальных устройств Android »
  2. Выберите одно из устройств из списка там и запустить его.
  3. Правильно ваше Android Приложение -> Запуск от имени -> Приложение Android

Это сработало для меня. Я попробовал это на эмуляторе в затмении. Требуется некоторое время, прежде чем приложение будет запущено. Для меня это заняло 33 секунды. Подождите, пока в консоли не появится сообщение «Удачи!»

8
задан Daniel Fortunov 18 May 2009 в 18:02
поделиться

2 ответа

Один из способов справиться с этим - передать MSBuild параметр в командный файл, чтобы он знал, что MSBuild вызывает его, а не из командной строки. Например, я создал образец файла test.bat, показанный ниже

ECHO OFF

IF (%1)==() goto Start
SET fromMSBuild=1

:Start

ECHO fromMSBuild:%fromMSBuild%


REM ***** Perform your actions here *****

set theExitCode=101
GOTO End



:End
IF %fromMSBuild%==1 exit %theExitCode%


REM **** Not from MSBuild ****

ECHO Exiting with exit code %theExitCode%
exit /b %theExitCode%

И я создал файл MSBuild wrapper.proj, который имеет следующий вид:

<Project DefaultTargets="Demo" ToolsVersion="3.5"
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <BatchFile>test.bat</BatchFile>
    <FromMSBuild>FromMSBuild</FromMSBuild>
  </PropertyGroup>

  <Target Name="Demo">

    <Message Text="Executing batch file $(BatchFile)" Importance="high"/>

    <PropertyGroup>
      <_Command>$(BatchFile) $(FromMSBuild)</_Command>
    </PropertyGroup>

    <Exec Command="$(_Command)">
      <Output PropertyName="CommandExitCode" TaskParameter="ExitCode"/>
    </Exec>

    <Message Text="CommandExitCode: $(CommandExitCode)"/>

  </Target>
</Project>

Если вы запустите файл test.bat из командной строки, результат будет

C:\Data\Development\My Code\Community\MSBuild\BatchFile>test.bat

C:\Data\Development\My Code\Community\MSBuild\BatchFile>ECHO OFF
fromMSBuild:0
Exiting with exit code 101

И от MSBuild результат:

C:\Data\Development\My Code\Community\MSBuild\BatchFile>msbuild Wrapper.proj /t:Demo /fl /nologo
Build started 5/18/2009 10:54:52 PM.
Project "C:\Data\Development\My Code\Community\MSBuild\BatchFile\Wrapper.proj" on node 0 (Demo target(s)).
  Executing batch file test.bat
  fromMSBuild:1
C:\Data\Development\My Code\Community\MSBuild\BatchFile\Wrapper.proj(17,5): error MSB3073: The command "test.bat FromMSBuild" exi
ted with code 101.
Done Building Project "C:\Data\Development\My Code\Community\MSBuild\BatchFile\Wrapper.proj" (Demo target(s)) -- FAILED.


Build FAILED.

"C:\Data\Development\My Code\Community\MSBuild\BatchFile\Wrapper.proj" (Demo target) (1) ->
(Demo target) ->
  C:\Data\Development\My Code\Community\MSBuild\BatchFile\Wrapper.proj(17,5): error MSB3073: The command "test.bat FromMSBuild" e
xited with code 101.

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.06

Саид Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build

13
ответ дан 5 December 2019 в 11:26
поделиться

Я этого не пробовал, но что, если вы просто установите переменную среды с именем ERRORLEVEL? Скрытый после содержимого вашей команды Exec, MSBuild имеет «exit% ERRORLEVEL%». % ERRORLEVEL%, если установлено, отменяет любой фактический уровень ошибки.

0
ответ дан 5 December 2019 в 11:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: