У меня есть проект C ++, который имеет событие после сборки, определенное через пользовательский интерфейс.Событие запускает исполняемый файл, и его сообщения журнала выводятся в окно вывода.Эти сообщения могут быть ошибочными, и VS воспринимает их как ошибки сборки.Однако я не хочу неудачной сборки, если эта команда сообщает об ошибках.
Я провел некоторое исследование и обнаружил, что, используя элемент <Target>
в файле проекта, я могу игнорировать ошибки.Я определил его в конце файла.
<Target Name="PostBuildEvent" Condition="'$(PostBuildEvent)'!=''" DependsOnTargets="$(PostBuildEventDependsOn)">
<Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" />
</Target>
</Project>
Это работает только в том случае, если в элементе <PropertyGroup>
определено событие после сборки.
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PostBuildEvent>Start the executable</PostBuildEvent>
</PostBuildEvent>
Однако, если установитькоманда через пользовательский интерфейс, значение помещается в часть <ItemDefinitionGroup>
.
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PostBuildEvent>
<Command>Start the executable</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
Если у меня есть событие, определенное в части <ItemDefinitionGroup>
, $(PostBuildEvent)
будет пустым и ничего не будетnamed.
Моя проблема, связанная со свойством, определенным в <PropertyGroup>
, заключается в том, что оно не синхронизировано с пользовательским интерфейсом.При изменении события после сборки в пользовательском интерфейсе определение <ItemDefinitionGroup>
будет обновлено.и не будет вызываться обновленная команда.
Возможно ли получить доступ к значению <ItemDefinitionGroup>/<PostBuildEvent>/<Command>
в элементе <Target>
?
Если 1. невозможно, как я могу изменить <PropertyGroup>/<PostBuildEvent>
через пользовательский интерфейс?