VS2008后构建事件批处理文件
-
30-09-2019 - |
题
我正在尝试执行批处理文件以在构建后移动一堆文件,因此我创建了一个看起来像这样的后构建事件:
$(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
在与后构建活动中
"$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"
其他提示
如果您想进行复杂的后建造复制,那么可能值得一看 MSBUILD社区任务 项目。它具有包装Robocopy.exe的任务,这可能是完成任务的一种更干净的方法。
通常,我制作一个单独的“构建”项目,该项目是空的,除了执行前/邮政构建步骤外,什么都不做。它运行良好。
我认为您可能只需要在批处理脚本的路径上引号,即您的后构建活动应该是:
"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)
这对我来说是一个在一个目录中的C#项目,其路径上有空间。
只需这样的键
d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"
这对我有用。不要使用 CALL
调用批处理文件的功能!!!
将所有参数传递到主批处理文件中,然后处理内部的事物。如果您有其他批处理或一组要调用的批次,请不要在邮政构建事件中调用它们,只需从主批处理文件调用其他批处理文件即可。
不隶属于 StackOverflow