Поделиться через


Страница "События сборки", проектный конструктор (C#)

Замечание

Эта страница относится к Visual Studio 2019. Если вы используете Visual Studio 2022, конструктор проектов для .NET Core и .NET 5 и более поздних проектов совершенно отличается. См. раздел "Указание событий сборки" (C#).

Используйте страницу "События сборки " конструктора проектов , чтобы указать инструкции по настройке сборки. Можно также указать условия, в которых выполняются любые события после сборки. Дополнительные сведения см. в разделе "Практическое руководство. Указание событий сборки (C#) и практическое руководство. Указание событий сборки (Visual Basic)".

Список элементов UI

Конфигурация

Этот элемент управления не редактируется на этой странице. Описание этого элемента управления см. в разделе "Страница сборки", конструктор проектов (C#).

Платформа

Этот элемент управления не редактируется на этой странице. Описание этого элемента управления см. в разделе "Страница сборки", конструктор проектов (C#).

Командная строка события предварительной сборки

Указывает все команды, выполняемые перед началом сборки. Чтобы ввести длинные команды, нажмите кнопку "Изменить предварительную сборку ", чтобы отобразить диалоговое окно командной строки события предварительной сборки или события после сборки.

Замечание

События предварительной сборки не выполняются, если проект обновлён и сборка не запускается.

Командная строка события после сборки

Указывает все команды, выполняемые после завершения сборки. Чтобы ввести длинные команды, нажмите кнопку "Изменить после сборки ", чтобы отобразить диалоговое окно командной строки события предварительной сборки или события после сборки.

Замечание

Добавьте инструкцию call перед всеми командами после сборки, выполняющими .bat файлы. Например, call C:\MyFile.bat или call C:\MyFile.bat call C:\MyFile2.bat.

Запуск события после сборки

Указывает следующие условия для запуска события после сборки, как показано в следующей таблице.

Вариант Результат
Всегда Событие после сборки выполняется независимо от того, успешно ли выполняется сборка.
При успешной сборке Событие после сборки выполняется, если сборка выполнена успешно. Таким образом, событие выполняется даже для проекта, который up-to-date, пока сборка завершается успешно.
Когда сборка обновляет выходные данные проекта Событие после сборки выполняется только в том случае, если выходной файл компилятора (.exe или .dll) отличается от предыдущего выходного файла компилятора. Таким образом, событие после сборки не выполняется, если проект up-to-date.

В файле проекта

В более ранних версиях Visual Studio при изменении параметра PreBuildEvent или PostBuildEvent в интегрированной среде разработки Visual Studio добавляет PreBuildEvent в файл проекта или PostBuildEvent свойство. Например, если в интегрированной среде разработки задан параметр командной строки PreBuildEvent :

"$(ProjectDir)PreBuildEvent.bat" "$(ProjectDir)..\" "$(ProjectDir)" "$(TargetDir)"

затем параметр файла проекта:

<PropertyGroup>
    <PreBuildEvent>"$(ProjectDir)PreBuildEvent.bat" "$(ProjectDir)..\" "$(ProjectDir)" "$(TargetDir)" />
</PropertyGroup>

Для проектов .NET Core Visual Studio добавляет целевой объект MSBuild с именем PreBuild или PostBuild для параметров PreBuildEvent и PostBuildEvent . Эти целевые объекты используют атрибуты BeforeTargets и AfterTargets , распознаваемые MSBuild. Например, в предыдущем примере Visual Studio теперь создает следующий код:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="&quot;$(ProjectDir)PreBuildEvent.bat&quot; &quot;$(ProjectDir)..\&quot; &quot;$(ProjectDir)&quot; &quot;$(TargetDir)&quot;" />
</Target>

Для события после сборки используйте имя PostBuild и задайте для атрибута AfterTargetsPostBuildEventзначение .

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
   <Exec Command="echo Output written to $(TargetDir)" />
</Target>

Замечание

Эти изменения в файле проекта были внесены для поддержки проектов в стиле ПАКЕТА SDK. При переносе файла проекта из старого формата в формат пакета SDK вручную необходимо удалить PreBuildEvent и PostBuildEvent заменить их PreBuildPostBuild и целевыми объектами, как показано в приведенном выше коде. Сведения о том, как определить, является ли проект проектом в стиле ПАКЕТА SDK, см. раздел "Проверка формата проекта".

См. также