MS Visual Studio 子项目编译预生成事件 IF 条件错误

MS Visual Studio subproject compilation prebuilt events IF condition error

我的解决方案有两个项目:c++ dll 和 c# web。 Dll 项目有 预建事件 像这样

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

而且,显然,如果我 运行 它用于 dll 项目,这种情况不会中断构建过程并且它会成功完成。

但是.. Web 项目依赖于 dll,因此在它自己的预构建事件中通过 MSBUILD.exe 命令依次构建它。也就是说,结果是预构建父项(MSBUILD for web)紧随其后的是嵌套的预构建子项(IF for dll)。 .如果我尝试构建 web 项目,它会在 MSBUILD.exe 的子 dll 项目(在 web pre -built 事件)已成功构建 !!! - 结果 dll 文件已出现在输出目录中!

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

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

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