【问题标题】:MS Visual Studio subproject compilation prebuilt events IF condition errorMS Visual Studio 子项目编译预建事件 IF 条件错误
【发布时间】:2020-12-29 20:19:23
【问题描述】:

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

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

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

但是.. Web 项目依赖于 dll,因此反过来,在它自己的预构建事件中通过 MSBUILD.exe 命令对其进行 uilds。也就是说,结果是预构建父级(Web 的 MSBUILD)跟随嵌套的预构建子级(DLL 的 IF)。 .如果我尝试构建 Web 项目,它会在 MSBUILD.exe 的子 dll 项目(在 Web 预建事件中)之后以消息 Dll building error(来自 dll 项目预建事件)中断成功构建!!! - 结果 dll 文件已出现在输出目录中!。

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

【问题讨论】:

    标签: c# c++ visual-studio pre-build-event


    【解决方案1】:

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

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

    【讨论】:

    • 是的,抱歉,算了。真正的预建条件是 IF 2 == 1 ( echo ERROR: Dll building error; exit /b 1 ),但我将算法更改为使用依赖项,而不是预构建事件中的 msbuild,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多