生成后应忽略子任务的退出代码

问题描述

我有一个带有Post-Build-Event的Visual Studio 2019项目,该项目正在调用我用C#编写的EXE文件

构建后事件: MyTool.exe "$(TargetPath)"

此EXE文件正在做一些工作,然后调用一个EXE文件AnotherTool.exe SomeArguments

问题是,如果第二个EXE文件(AnotherTool.exe)给出错误(在StandardError输出上)或退出代码!= 0,则Visual Studio正在“看到”该代码,尽管AnotherTool.exe是不是直接从构建后事件中调用。 Post-Build只是称为MyTool.exe。

我希望MyTool.exe处理该退出代码,因此Visual Studio应该忽略它们。但是,当AnotherTool.exe退出并出现错误时,构建将失败。

有什么想法吗?

编辑:“ MyTool.exe”正在使用System.Diagnostics.Process调用“ AnotherTool.exe”。我设置RedirectStandardOutput = true和RedirectStandardError = true,然后使用Start()和WaitForExit()调用Process。

但是无论该处理结果是什么,MyTool.exe总是以Environment.Exit(0)退出以提供干净的退出

解决方法

不是答案,而是可行的解决方法:

我创建了一个批处理文件,该文件名为:

start MyTool.exe %1

使用此替代方法,构建成功且没有错误,并且工具链已正确启动。我再也看不到Visual Studio中显示的错误消息。

权衡1:运行时,“ MyTool.exe”现在显示在命令窗口中。

权衡2:如果“ MyTool.exe”失败,退出代码!= 0,Visual Studio将不会注意到。

如果我从批处理中删除“开始”,则行为就像直接调用MyTool.exe。