如果条件错误,则MS Visual Studio子项目编译预建事件

问题描述

我的解决方案有两个项目:c ++ dll和c#web。 DLL项目具有预建事件,例如

IF 2 == 1
(
   echo ERROR: Dll building error
)

而且,显然,如果我为dll项目运行该条件,则此条件不会中断构建过程,并且可以成功完成。

但是.. Web项目依赖于dll,因此,在其自己的预生成事件中,依次通过MSBUILD.exe命令对其进行启动。因此,结果是,预构建父级(对于Web为MSBUILD),后跟嵌套的预构建子级(对于DLL为IF)。 。而且,如果我尝试构建Web项目,则MSBUILD.exe子DLL项目(在Web预构建事件中)发生错误后,会中断消息 Dll生成错误(来自DLL项目预构建事件)。 成功构建!-结果dll文件已出现在输出目录中!。

是什么意思?子级构建前事件条件错误地中断了父级构建过程?

解决方法

问题似乎是您滥用MSBuild。处理“子项目”的正确方法是使用解决方案。在此解决方案中,您既有项目,又有来自DLL的Web项目的项目依赖项。您构建解决方案,这就是一个MSBuild命令。因此,C#Web项目不需要启动另一个MSBuild命令。

MSBuild在使用解决方案文件时,会看到真正的依存关系并正确处理构建失败。请注意,预构建事件中的“ echo ERROR”只是屏幕上的文本,而不是构建失败。 You'll need to exit /b 1 the pre-build step to stop the build

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...