VS2010:在构建后的活动中我们可以有多个if吗?

时间:2013-09-30 07:04:07

标签: post-build-event

我们可以这样:

if "Debug"=="$(ConfigurationName)"
(
  goto :nocopy
)
else if "Release"=="$(ConfigurationName)"
(
  del "$(TargetPath).config"
  copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config"
)
else if "ReleaseBeta"=="$(ConfigurationName)"
(
  del "$(TargetPath).config"
  copy "$(ProjectDir)\App.ReleaseBeta.config" "$(TargetPath).config"
)
else if "ReleaseProduction"=="$(ConfigurationName)"
(
  del "$(TargetPath).config"
  copy "$(ProjectDir)\App.ReleaseProduction.config" "$(TargetPath).config"
)
    :nocopy

我已经尝试过,但它不起作用。错误代码是255。

2 个答案:

答案 0 :(得分:30)

您可以根据需要添加任意数量的条件语句,只需将它们用新行分隔,然后再输入

所以改变

if "Debug"=="$(ConfigurationName)"
(
  goto :nocopy
)
else if...

if "Debug" == "$(ConfigurationName)" (goto :nocopy)
if "Release" ==" $(ConfigurationName)" (
    del "$(TargetPath).config"
    copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config" )
if ...

它将编译并运行得很好

注意:命令将以与DOS批处理文件相同的方式逐行解释,因此将左括号“(”与if语句和右括号放在同一行中非常重要“) “与该区块中的最后一个命令在同一行。

答案 1 :(得分:5)

如果您的构建后逻辑变得复杂,我建议将其移至外部文件。例如,以下构建后事件:

CALL "$(ProjectDir)PostBuild.cmd" $(ConfigurationName)

在项目目录中执行批处理文件PostBuild.cmd,并将$(ConfigurationName)作为参数传递。您还可以传递其他参数,例如$(TargetPath)。

然后,您可以实现任何所需的内容,包括多个if语句,更重要的是,无需运行Visual Studio构建即可对其进行调试。