我的解决方案有两个项目: c++ dll和c# web。Dll项目有预构建事件,如下所示
IF 2 == 1
(
echo ERROR: Dll building error
)而且,很明显,如果我为dll项目运行此条件,则此条件不会中断构建过程,并且会成功地结束。
但是..。网络项目依赖于dll,因此通过MSBUILD.exe命令在它自己的预构建事件中使用它。因此,在构建前父级(MSBUILD,用于web)之后是嵌套的预构建子程序(如果用于dll)。。如果我尝试构建web项目,它会中断消息Dll构建错误(来自dll项目预构建事件),因为MSBUILD.exe (在web预构建事件中)生成的子dll项目已经成功地构建了!--结果dll文件出现在输出dir中!
这是什么意思?子生成前事件条件不正确地中断父生成进程?
发布于 2020-09-11 11:57:07
问题似乎是您滥用了MSBuild。处理“子项目”的正确方法是使用解决方案。在此解决方案中,您有两个项目和一个来自DLL上的web项目的项目依赖项。构建解决方案,这是一个MSBuild命令。因此,C# web项目不需要启动另一个MSBuild命令。
MSBuild在使用解决方案文件时,会看到真正的依赖项,并正确地处理构建失败。注意,构建前事件中的“回显错误”只是屏幕上的文本,而不是生成失败。You'll need to exit /b 1 the pre-build step to stop the build
https://stackoverflow.com/questions/63844854
复制相似问题