使用构建事件停止构建并显示消息

Posted

技术标签:

【中文标题】使用构建事件停止构建并显示消息【英文标题】:Stop build and display message with Build Events 【发布时间】:2013-10-14 12:15:54 【问题描述】:

我正在使用 Microsoft Visual Studio Express 2012 的构建事件将一些文件复制到 $(TargetDir)。如果找不到特定文件,如何停止构建。目前我有类似的东西:

IF EXIST somefile ( 
ECHO true 
) ELSE (
ECHO false 
)

适当时在构建输出对话框中显示truefalse,但我想将ECHO false 替换为

ELSE (
ECHO somefile was not found
exit
) 

exit 停止 Visual Studio 构建项目,somefile was not found 是输出控制台中显示的最后一条消息。

【问题讨论】:

【参考方案1】:

强制 Visual Studio 停止构建它只需要设置错误级别

IF NOT EXIST somefile (
  echo somefile was not found
  echo ERROR: This will be displayed in the error list of VS
  exit /b 1
)

【讨论】:

exit 命令在作为预构建事件发出时不会阻止 Visual Studio 构建项目。 给出错误级别会使 Visual Studio 抱怨预构建步骤本身 Error 1 The command "IF NOT EXIST somefile1 ( echo somefile was not found exit 3 )" exited with code 3. 这似乎更像是一个 hack。 退出并没有停止它,但它应该有一个错误级别。此外,您可以添加一些错误输出,它们将显示在错误列表中,而不仅仅是在构建输出中 我总是使用 prebuild.bat 文件,然后 VS 报告批处理文件的错误(就像它在链接时会报告错误一样)Fehler 2 error MSB3073: Der Befehl "D:\Projekte\xyz\Tools\PreBuild.bat :VCEnd" wurde mit dem Code 2 beendet. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 103 您不能直接访问它们,只能作为批处理参数访问它们。我的预链接事件是$(ProjectDir)\PreBuild.bat "$(SolutionDir)"。从批处理访问%1 参数时,我使用引号来避免出现空格或特殊字符的问题

以上是关于使用构建事件停止构建并显示消息的主要内容,如果未能解决你的问题,请参考以下文章

应用程序处理失败,并显示消息“此构建无效”。

Flutter 项目构建失败并显示错误消息:-

Jenkins 管道脚本 - 停止先前的构建,并在构建失败时打印消息

Flutter - 使用 StreamBuilder 构建的聊天屏幕,多次显示消息

Azure devops 中的 Docker 构建失败并显示消息无法加载文件或程序集“Microsoft.CodeAnalysis,

Chrome 性能时间线在大型 websocket 消息事件后显示大型“其他”部分