VS2008后期构建事件批处理文件

时间:2010-08-22 05:57:43

标签: visual-studio batch-file post-build-event

我正在尝试执行批处理文件以在构建之后移动一堆文件,因此我创建了一个类似于此的构建后事件:

$(ProjectDir)CopyPlugins.bat $(ConfigurationName)

问题是,当Visual Studio尝试运行该事件时,我收到进程exited with code 9009

的错误

问题似乎是VS将整行放在引号中,以便它运行的命令是:

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat Debug"

当然,我打算做的是一个非常微妙的变化,改变结束引号的位置。

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat" Debug

有没有办法解决VS提供的这种相当恼人的“帮助”?

4 个答案:

答案 0 :(得分:6)

再创建两个批处理文件,只使用不同的参数执行第一个批处理文件。

<强> CopyPlugins-debug.bat Call CopyPlugins.bat debug

<强> CopyPlugins-release.bat Call CopyPlugins.bat release

在VS后期制作活动中 "$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"

答案 1 :(得分:0)

如果您正在尝试进行复杂的构建后复制,则可能需要查看MSBuild Community Tasks项目。它有一个包装RoboCopy.exe的任务,这可能是一种更简洁的方式来完成你的任务。

通常我会创建一个单独的“构建”项目,该项目为空,除了执行前/后构建步骤之外什么都不做。它运作得很好。

答案 2 :(得分:0)

我认为您可能只需要在批处理脚本的路径周围引用,即您的构建后事件应该是:

"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)

这对我来说是一个位于路径中有空格的目录中的C#项目。

答案 3 :(得分:0)

只需按此键入

即可
d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"

这对我有用。不要使用CALL函数来调用批处理文件!!!。

将所有参数传递到主批处理文件中并处理内部事物。 如果要调用其他批次或批次集,请不要在后期构建事件中调用它们,只需从主批处理文件中调用其他批处理文件。