停止构建并在构建事件中显示消息

4

我正在使用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个回答

5
强制停止 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
)

1
当作为预构建事件发出时,此“exit”命令不会停止Visual Studio构建项目。 - Chris Seymour
指定错误级别会导致Visual Studio抱怨预构建步骤本身的问题。错误1:“IF NOT EXIST somefile1 ( echo somefile was not found exit 3 )”命令以代码3退出。这似乎更像是一种hack方法。 - Chris Seymour
退出命令不能停止它,但是可以通过错误级别来实现。此外,您可以添加一些错误输出,这些输出将显示在错误列表中,而不仅仅是构建输出中。 - jeb
我总是使用一个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 - jeb
好的,那个可以用...但是像 $(SolutionDir) 这样的宏怎么办?如果可能的话,我想在 prebuild.bat 脚本中使用它们。 - Chris Seymour
1
你不能直接访问它们,但可以作为批处理参数。我的 prelink 事件是 $(ProjectDir)\PreBuild.bat "$(SolutionDir)"。我使用引号来避免在从批处理访问 %1 参数时出现空格或特殊字符的问题。 - jeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接