使用构建事件停止构建并显示消息
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
)
适当时在构建输出对话框中显示true
和false
,但我想将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
参数时,我使用引号来避免出现空格或特殊字符的问题以上是关于使用构建事件停止构建并显示消息的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins 管道脚本 - 停止先前的构建,并在构建失败时打印消息
Flutter - 使用 StreamBuilder 构建的聊天屏幕,多次显示消息
Azure devops 中的 Docker 构建失败并显示消息无法加载文件或程序集“Microsoft.CodeAnalysis,