visual-studio - 如何运行仅适用于调试版本的Visual Studio生成事件

  显示原文与译文双语对照的内容

如何限制我的post-build事件只能用于一种类型的构建? 我正在使用事件将dll复制到本地IIS虚拟目录,但在发布模式下不希望这种情况在构建服务器上发生。

时间:

Pre-和Post-Build事件作为批处理脚本运行。 你可以在 $(ConfigurationName) 上执行条件语句。

例如


if $(ConfigurationName) == Debug xcopy something somewhere

仅供参考,你不需要使用 goto 。 如果命令可以与圆括号一起使用:


if $(ConfigurationName) == Debug (
 copy"$(TargetDir)myapp.dll""c:deliverybin"/y
 copy"$(TargetDir)myapp.dll.config""c:deliverybin"/y
) ELSE (
 echo"why, Microsoft, why".
)

或者( 由于事件被放入批处理文件 &,然后调用),使用以下命令。 ( 在生成事件框中,不在批处理文件中):


if $(ConfigurationName) == Debug goto :debug

:release
signtool.exe.. ..
xcopy.. .

goto :exit

:debug
' debug items in here

:exit

通过这种方式,你可以有任何配置的事件,还可以使用宏管理它,而不必将它的传递到批处理文件&记住 %1 是 $(OutputPath) 等:

添加你的日志构建事件,如正常。 然后保存记事本( 或者你喜欢的编辑器) 中你项目中,打开它并添加条件到PostBuildEvent属性组。 下面是一个示例:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug'">
 <PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>

你可以将配置名称传递给post-build脚本并在那里检查它是否应该运行。

将配置名称传递给 $(ConfigurationName)

检查它是基于如何实现post-build步骤--的,它将是一个command-line参数

任何项目设置一样,BuildEvents可以配置为每个配置,只需在属性页对话框的下拉列表中选择要更改的配置,然后编辑后期生成步骤

在 vs 2012中,你必须使用( 我也想在 vs 2010中)


if $(Configuration) == Debug xcopy

$(ConfigurationName) 被列为宏,但未指定。

enter image description here

比较:http://msdn.microsoft.com/en-us/library/c02as0cs(v=vs.110).aspx

...