我有一个 Visual Studio 项目,其中包含几个自定义构建步骤,但其中一些根本无法运行。没有错误也没有警告,根据他们正在运行的构建日志,但绝对不是。
(它在 2010 之前的 Visual Studio 版本中都可以工作,但在 Visual Studio 2010 及更高版本中出现问题。)
我有一个 Visual Studio 项目,其中包含几个自定义构建步骤,但其中一些根本无法运行。没有错误也没有警告,根据他们正在运行的构建日志,但绝对不是。
(它在 2010 之前的 Visual Studio 版本中都可以工作,但在 Visual Studio 2010 及更高版本中出现问题。)
它失败的原因是在同一个项目中有另一个自定义构建步骤正在调用批处理文件,如下所示:
命令行:buildsomething.bat something.h
描述:构建一些东西
输出:something.h
从 Visual Studio 2010 开始,所有自定义构建命令都连接到一个批处理文件中,然后执行。当一个批处理文件运行另一个批处理文件时,Windows 不会将控制权返回给第一个批处理文件。这就像一个 goto,而不是函数调用。所以要解决这个问题,你需要call
像这样使用:
命令行:调用buildsomething.bat something.h
call
使控制流返回到 Visual Studio 的批处理文件,从而让您的其他自定义构建步骤运行。
(我正在回答我自己的问题,以便未来的搜索者可以找到答案。)
确保以下两个文件处于良好状态。更好地将这些文件与有效的 VS 设置进行比较。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets