我有一个Visual Studio项目,其中包含几个自定义构建步骤,但其中一些只是无法运行。没有错误也没有警告,根据构建日志,他们 正在运行,但它们绝对不是。
(它在2010年之前的Visual Studio版本中都有效,但在Visual Studio 2010及更高版本中出现了问题。)
答案 0 :(得分:20)
它失败的原因是在同一个调用批处理文件的项目中有另一个自定义构建步骤,如下所示:
命令行:buildsomething.bat something.h 描述:建立一些东西
输出:something.h
从Visual Studio 2010开始,所有自定义构建命令都会连接到一个批处理文件中,然后执行该文件。当批处理文件运行另一个批处理文件时,Windows不会将控制权返回给第一个批处理文件。它就像一个goto,而不是函数调用。因此,要解决此问题,您需要使用call
,如下所示:
命令行:调用 buildsomething.bat something.h。
call
使控制流程返回到Visual Studio的批处理文件,从而让您的其他自定义构建步骤运行。
(我正在回答我自己的问题,以便未来的搜索者可以找到答案。)
答案 1 :(得分:0)
确保以下两个文件状态良好。更好地将这些文件与工作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