Visual Studio:多个后期构建命令?
Visual Studio 2008允许我声明一个命令并将其附加到项目的构建后事件。像许多开发人员一样,我经常使用它来将文件复制到应用程序输出目录。Visual Studio:多个后期构建命令?
我正在开发一个项目,我需要将文件从两个不同的地方复制到两个不同的目的地,所有这些都在一个项目中。换句话说,我需要从相同的构建后事件调用两个不同的xcopy命令。它看起来后生成事件只会采取一个单一的命令,如果我需要调用多个命令,我将不得不将这些命令放在一个* .bat文件中,并从生成后事件中调用它。
这是正确的,还是有更简单的方法来调用生成后事件中的两个命令?在此先感谢您的帮助。
您可以根据需要键入尽可能多的构建后命令。用换行符分开它们。
下面是我的一个项目的示例。
每个命令应该是在单独的行。但我发现,如果执行其中一个命令时出现错误,则整个后构建失败,因此您需要逐个尝试每个后构建命令进行调试。
“xcopy/f”将显示完整的源文件和目标文件名,这些文件将在故障发生之前打印,使多个xcopy命令比多个复制命令更容易诊断。 – yoyo 2014-09-09 21:09:49
还有另一种选择:你可以用&&
分隔命令。 例如
copy $(TargetPath) d:\folder1 && copy $(TargetPath) d:\folder2
这是不完全一样的用换行分隔:与&&
,如果前面的命令失败,接下来commant将无法运行。
通过换行符分隔更容易阅读,所以您应该更喜欢它。不过,我知道至少有一种情况是&&
有用。当你使用属性表在不同的机器上进行不同的构建后步骤时,情况就是这样。 VS 2008不允许直接在属性表中设置PostBuildStep,但是您可以使用您的命令添加一个用户宏并从主项目设置中调用它。宏是单行的,所以你可以使用&&
在那里有多个命令。
只需在您的批处理脚本中加前缀“call”即可。因此,批处理脚本下面的语句也会在从批处理脚本返回调用后执行。
call Script1.cmd
call Script2.bat
这个答案已经在2年前给出了。 – 2015-09-14 10:32:48
womp建议的方法在Visual Studio 2015/2017(Windows)中可用,但在Visual Studio for Mac(预览版)中不起作用,它似乎只执行第一个命令。 ,我发现在Visual Studio中的Mac和Windows版本的工作,唯一的办法是链接2的MSBuild命令:
<Target Name="AfterResolveReferences">
<Exec Command="path\MyFirstCommand.exe -parameters" />
</Target>
<Target Name="MySecondCommand" AfterTargets="AfterResolveReferences" >
<Exec Command="path\MySecondCommand.exe -parameters" />
</Target>
上面的例子使用“AfterResolveReferences”事件,但显然应该PostBuild事件工作了。
包含屏幕截图仅在您打算永久托管它时才有用。 – OWenJ23 2012-10-22 20:11:33
@ OWenJ23 ...或'imageshack'在这种情况下;) – 2013-04-01 10:29:48
尽管在单独的行中,我的命令一起运行,就好像它们在一行中一样。 – Trevor 2015-07-28 20:27:41