为什么我的自定义构建步骤在Visual Studio中没有运行?

16

我有一个使用Visual Studio创建的项目,其中包含若干个自定义构建步骤,但其中一些步骤无法运行。虽然构建日志显示它们正在运行(并且没有错误或警告),但实际上它们并没有运行。

(在 Visual Studio 2010 及更高版本之前,所有步骤都能正常工作。)

2个回答

27
它失败的原因是在同一项目中还有另一个自定义构建步骤,它调用了一个批处理文件,就像这样:

命令行:buildsomething.bat something.h
描述:构建something
输出:something.h

从Visual Studio 2010开始,所有自定义构建命令都被连接到单个批处理文件中,然后执行该文件。当一个批处理文件运行另一个批处理文件时,Windows不会将控制返回到第一个批处理文件。就像goto语句,而不是函数调用。因此,要解决问题,需要像这样使用call:

命令行:call buildsomething.bat something.h

调用使控制流返回到Visual Studio的批处理文件,从而使您的其他自定义构建步骤运行。 (我回答我的问题,以便未来的搜索者可以找到答案。)

仍然适用于MSVC 2017。 - YePhIcK
1
@YePhIcK:谢谢 - 我已经更新了问题和答案以反映这一点。 - RichieHindle

-1

确保以下两个文件状态良好。最好与工作中的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接