[英]VS2008 post-build event batch file
我试图执行一个批处理文件以在构建后四处移动一堆文件,所以我创建了一个如下所示的构建后事件:
$(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提供的这种烦人的“帮助”?
再创建两个批处理文件,这些批处理文件仅使用不同的参数执行第一个。
CopyPlugins-debug.bat Call CopyPlugins.bat debug
CopyPlugins-release.bat Call CopyPlugins.bat release
在VS中,生成后事件 "$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"
像这样输入
d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"
这对我有用。 不要使用CALL
函数来调用批处理文件!!!
将所有参数传递到主批处理文件中并在其中进行处理。 如果还有其他批次或一组批次要调用,请不要在构建后事件中调用它们,只需从主批次文件中调用其他批次文件即可。
如果您要进行复杂的生成后复制,则可能值得研究MSBuild社区任务项目。 它具有包装RoboCopy.exe的任务,这可能是完成任务的一种更干净的方法。
通常,我创建一个单独的“构建”项目,该项目为空,除了执行之前/之后的构建步骤外,什么也不做。 效果很好。
我认为您可能只需要在批处理脚本的路径周围加上引号,即您的构建后事件应为:
"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)
对于一个位于目录中且路径中有空格的C#项目,这为我工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.