Answers:
您可以输入任意数量的后期构建命令。只需用换行符将它们分开。
这是我的一个项目的示例。
每个命令应放在单独的行上。但是我发现,如果执行这些命令之一出错,整个构建后都会失败,因此您需要一次尝试每个构建后命令进行调试。
用&或&&或;分隔命令。在VS2017中不起作用。不能相信如此简单的功能在VS2017中不可用。Visual Studio尝试将生成后事件窗口中的整个文本作为一个字符串执行。现在对我来说唯一的选择是创建一个我不特别喜欢的批处理脚本。
如果您有多个属性表要在同一构建事件上执行某些操作,则可以执行以下操作来链接命令:
%(Command)
echo foo
其中%(Command)
扩展到命令的上一个值。
就我个人而言,即使我当前没有继承的命令,我也会对所有构建事件执行此操作,因为这样可以确保以后再添加属性表时都不会出现问题。
exit
在链中任何地方执行批处理语句都会导致链中止。确实exit 1
会导致构建失败,而exit 0
只是中止步骤并继续构建。
在Visual Studio 2017中,您可以执行以下操作:
<PostBuildEvent>
<Command>
copy $(TargetPath) $(SolutionDIr)\bin1
copy $(TargetPath) $(SolutionDIr)\bin2
</Command>
</PostBuildEvent>
womp建议的方法在Visual Studio 2015/2017(Windows)中有效,但在Visual Studio for Mac(Preview)中无效,后者似乎仅执行第一个命令。我发现在Mac和Windows版本的Visual Studio中都可以使用的唯一方法是链接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事件。
这个问题没有很好的解决方案。调用提示确实会导致其他脚本运行。我注意到错误检测将无法进行。将'exit / b 1'放入FailMe.cmd中在后期构建步骤中使用'call FailMe.cmd'。注意构建不会失败吗?我正在使用VS 2017构建C#项目。现在使用“ FailMe.cmd”进行尝试。现在,该版本报告错误。
因此,如果错误报告很重要,那么只使用一个脚本可能会更好。