繁体   English   中英

VS2008生成后事件批处理文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM