“项目设计器”->“生成事件”页 (C#)

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

UIElement 列表

配置

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

平台

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

预生成事件命令行

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

注意

如果项目是最新的且没有触发任何生成,则不会运行预生成事件。

生成后事件命令行

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

注意

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

运行生成后事件

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

选项 结果
始终 无论生成是否成功,均运行生成后事件。
成功生成时 如果生成成功,则运行生成后事件。 因此,即使项目已为最新状态,但只要生成成功,就会运行该事件。
生成更新项目输出时 生成后事件仅在编译器的输出文件 (.exe or .dll) 不同于之前的编译器输出文件时才运行。 因此,如果项目为最新状态,则不会运行生成后事件。

在项目文件中

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

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

则项目文件设置为:

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

对于 .NET Core 项目,Visual Studio 2019(以及较新更新中的 Visual Studio 2017)为 PreBuildEvent 和 PostBuildEvent 设置添加了名为 PreBuildPostBuild 的 MSBuild 目标。 这些目标使用 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 并将属性 AfterTargets 设置为 PostBuildEvent

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

注意

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

另请参阅