我有一个使用Visual Studio创建的项目,其中包含若干个自定义构建步骤,但其中一些步骤无法运行。虽然构建日志显示它们正在运行(并且没有错误或警告),但实际上它们并没有运行。
(在 Visual Studio 2010 及更高版本之前,所有步骤都能正常工作。)
我有一个使用Visual Studio创建的项目,其中包含若干个自定义构建步骤,但其中一些步骤无法运行。虽然构建日志显示它们正在运行(并且没有错误或警告),但实际上它们并没有运行。
(在 Visual Studio 2010 及更高版本之前,所有步骤都能正常工作。)
从Visual Studio 2010开始,所有自定义构建命令都被连接到单个批处理文件中,然后执行该文件。当一个批处理文件运行另一个批处理文件时,Windows不会将控制返回到第一个批处理文件。就像goto语句,而不是函数调用。因此,要解决问题,需要像这样使用call:命令行:buildsomething.bat something.h
描述:构建something
输出:something.h
调用使控制流返回到Visual Studio的批处理文件,从而使您的其他自定义构建步骤运行。 (我回答我的问题,以便未来的搜索者可以找到答案。)命令行:call buildsomething.bat something.h
确保以下两个文件状态良好。最好与工作中的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