我正在尝试编写msbuild postbuild事件,该事件将复制文件。它不必是100%-目标文件可以使用或锁定,在这种情况下,我希望构建成功。
所以我有类似*的东西
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "cp foo `$(TargetDir)"
当$(TargetDir)\foo
被另一个进程使用时,出现错误,构建失败。所以我尝试
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "cp foo `$(TargetDir) -ErrorAction SilentlyContinue"
但是错误被打印出来并且失败了。所以我尝试
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "try { cp foo `$(TargetDir) } catch {}"
现在错误没有被打印出来,但是它仍然失败,因为如果我执行上面的命令,它$LastExitCode
仍然等于1。
我可以在try catch和powershell中再次包装,但是如何正确抑制错误?
*实际的命令如下-无关紧要
PowerShell -NoProfile -ExecutionPolicy Bypass -Command `"try { ls '`$(SolutionDir)\packages\GhostScriptSharp.*\Tools\gsdll32.dll' | Sort -Descending | Select -First 1 | cp -Destination '`$(TargetDir)' } catch {}`""
您可以使用exit
关键字来显式设置脚本的退出代码:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "cp foo `$(TargetDir) -ErrorAction SilentlyContinue; exit 0"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句