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

发布于 2024-09-18 06:17:45 字数 182 浏览 2 评论 0原文

我有一个 Visual Studio 项目,其中包含多个自定义生成步骤,但其中一些步骤根本无法运行。没有错误也没有警告,根据构建日志,它们正在运行,但它们绝对没有运行。

(这在 2010 年之前的 Visual Studio 版本中都可以正常工作,但在 Visual Studio 2010 及更高版本中会出错。)

I have a Visual Studio project with several Custom Build steps in it, but some of them are simply failing to run. There are no errors and no warnings, and according to the build logs they are running, but they're definitely not.

(It was all working in versions of Visual Studio prior to 2010, but it goes wrong in Visual Studio 2010 and later.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

呆橘 2024-09-25 06:17:45

失败的原因是同一项目中有另一个自定义构建步骤调用批处理文件,如下所示:

命令行:buildsomething.bat Something.h
描述:构建一些东西
输出:something.h

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

命令行:调用 buildsomething.bat Something.h

call 使控制流返回到 Visual Studio 的批处理文件,从而让其他自定义生成步骤运行。

(我正在回答我自己的问题,以便未来的搜索者可以找到答案。)

The reason it's failing is that there's another custom build step in the same project that's calling a batch file, like this:

Command Line: buildsomething.bat something.h
Description: Building something
Outputs: something.h

As of Visual Studio 2010, all the custom build commands are concatenated into a single batch file, which is then executed. When a batch file runs another batch file, Windows doesn't return control to the first batch file. It's like a goto, not a function call. So to fix the problem, you need to use call like this:

Command Line: call buildsomething.bat something.h

call makes the flow of control return to Visual Studio's batch file, and hence lets your other Custom Build steps run.

(I'm answering my own question so that future searchers can find the answer.)

温柔一刀 2024-09-25 06:17:45

确保以下两个文件状态良好。更好地将这些文件与工作 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

Ensure that below two files are in good shape. Better compare these files against a working VS setup.

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文