生成事件页,项目设计器(C#)

注释

此页面适用于 Visual Studio 2019。 如果使用 Visual Studio 2022,则 .NET Core 和 .NET 5 及更高版本的项目的项目设计器大相径庭。 请参阅“指定生成事件”(C#)。

使用项目设计器“生成事件”页指定生成配置说明。 还可以指定运行任何生成后事件的条件。 有关详细信息,请参阅如何:指定生成事件(C#)作方法:指定生成事件(Visual Basic)。

UIElement 列表

配置

此控件在此页中不可编辑。 有关此控件的说明,请参阅生成页、项目设计器 (C#)。

平台

此控件在此页上不可编辑。 有关此控件的说明,请参阅生成页、项目设计器 (C#)。

预生成事件命令行

指定要在生成开始之前执行的任何命令。 若要键入长命令,请单击“ 编辑预生成” 以显示 预生成事件/生成后事件命令行对话框

注释

如果项目是最新的且未触发构建,则预生成事件不会运行。

生成后事件命令行

指定要在生成结束后执行的任何命令。 若要键入长命令,请单击“ 编辑生成后” 以显示 预生成事件/生成后事件命令行对话框

注释

call在运行.bat文件的所有生成后命令之前添加语句。 例如,call C:\MyFile.batcall C:\MyFile.bat call C:\MyFile2.bat

运行生成后事件

指定要运行的生成后事件满足以下条件,如下表所示。

选项 结果
始终 无论生成成功,生成后事件都会运行。
成功生成时 如果生成成功,生成后事件将运行。 因此,即使生成成功,事件也会针对 up-to日期的项目运行。
生成更新项目输出时 生成后事件仅在编译器的输出文件(.exe.dll)与以前的编译器输出文件不同时运行。 因此,如果项目 up-to-date,则生成后事件不会运行。

在项目文件中

在 Visual Studio 的早期版本中,在 IDE 中更改 PreBuildEventPostBuildEvent 设置时,Visual Studio 会将一个或多个PreBuildEventPostBuildEvent属性添加到项目文件。 例如,如果 IDE 中的 PreBuildEvent 命令行设置如下:

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

然后,项目文件设置为:

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

对于 .NET Core 项目,Visual Studio 会添加一 PreBuild 个名为或 PostBuild 用于 PreBuildEventPostBuildEvent 设置的 MSBuild 目标。 这些目标使用 MSBuild 识别的 BeforeTargetsAfterTargets 属性。 例如,对于前面的示例,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 并将属性 AfterTargets 设置为 PostBuildEvent

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

注释

对支持 SDK 样式的项目进行了这些项目文件更改。 如果要手动将项目文件从旧格式迁移到 SDK 样式格式,则应删除 PreBuildEventPostBuildEvent 属性并将其替换为 PreBuildPostBuild 目标,如前面的代码所示。 若要了解如何判断项目是否为 SDK 样式项目,请参阅 “检查项目格式”。

另请参阅