MSVC2013:如何避免使用错误的Pre-build脚本中止构建过程(错误MSB3073::VCEnd“退出,代码为-1)

时间:2019-04-11 08:12:32

标签: c++ c visual-studio pre-build-event

我在MSVC13中设置了一个预构建事件,该事件以error MSB3073: :VCEnd" exited with code -1.退出 而且我无法绕过此错误,即使bat文件错误退出,我也不想停止构建过程。

我已经配置了

  

BuildEvents>预构建事件

调用bat文件 命令行:

  

致电$(ProjectDir)\ p​​re_build.bat $(配置)= 1

此bat文件包含2个对其他bat文件的调用。第一个错误退出(但我不在乎我想要完成的子任务),第二个正常。

在pre-build.bat中,我尝试拦截此错误并更新该值,以表明MSVC一切正常,但我无法成功。 我试图回显错误级别,但其中包含0。 我尝试将ERRORLEVEL设置为0,但在MSVC级别上未进行任何更改。 我尝试在bat文件的末尾添加出口0,出口/ b 0或@exit 0,但没有改变。

我发现此链接(https://blogs.msdn.microsoft.com/astebner/2006/08/08/how-to-make-visual-studio-2005-ignore-return-codes-from-pre-build-events/)解释了如何告诉MSVC忽略错误,但由于它是为MSVC2005编写的,并且vcxproj中的PreBuildEvent的语法已更改,因此它不起作用。

如果我在控制台中运行脚本,则该脚本会退出并显示错误,但是,如前所述,我不在乎此错误,因此部分工作已完成。

我也尝试使用以管理员身份运行的MSVC,无需更改。

pre-build.bat的内容:

  

致电build.bat%* TOOLCHAIN = mdk4cc5 TC_NO_CHECK = 1

然后build.bat运行SCons(我对SCons没有任何了解)

如果您对如何忽略MSVC中的此错误以继续进行构建过程(无论是否干净)有任何想法,这将非常有用,因为我已经花了一天的时间...

非常感谢您的反馈和答案。

2 个答案:

答案 0 :(得分:1)

您的命令输出在某处可能包含单词“ 错误”。

我们这里有一些脚本echo XX send-msg 19 82 Error :A KANAL A AUSGEFALLEN Error ge

然后构建输出包含:

2> ------ Erstellen gestartet: Projekt: DecoderTest, Konfiguration: Debug Any CPU ------
2>  Datei nicht gefunden
2>EXEC : XX   send-msg 19 82 error : A   KANAL A AUSGEFALLEN   Error   ge
2>  
2>  D:\Projekte\[...]\DecoderTest\\..\..\..\TableConverterTraverse.bat: Durchlauf erfolgreich.
2>C:\Program Files (x86)\Microsoft Visual Studio\[...]: error MSB3073: Der Befehl "D:\Projekte\[...]\DecoderTest\InvokeTableConverter.bat
2>C:\Program Files (x86)\Microsoft Visual Studio\[...]: error MSB3073: " wurde mit dem Code -1 beendet.
========== Erstellen: 1 erfolgreich, 1 fehlerhaft, 39 aktuell, 0 übersprungen ==========

沉默命令输出后,构建成功。

答案 1 :(得分:0)

我不是真正的C ++专家,但也许这篇文章可以为您提供帮助: Disable single warning error

“答案”中的某人谈论了Pragma Surprass,因此您可以尝试:

#pragma warning(suppress: 4101)

// here goes your single line of code where the warning occurs