Visual Studio的预构建事件在编译开始之前是否有保证会完成?

5

我正在使用Visual Studio中的预生成事件来运行批处理(.bat)文件,该文件执行一些代码生成操作(具体而言,我正在运行SqlMetal.exe以生成LinqToSql代码)。

批处理文件是否保证在编译开始之前完成?还是它异步运行批处理程序?

底线:我希望确保编译新代码,而不是旧代码。

如果无法保证 - 有哪些解决方案可用?


1
我非常确定批处理文件将会完成,但这并不意味着其中生成的进程已经退出。 - EricLaw
2个回答

8

谢谢和感谢提示!+1 不过这里似乎有一点分歧。请看EricLaw的评论(上面)。 - devuxer
我们两个都是对的 :-) 如果你调用一个批处理文件,它本身会生成异步进程,那么批处理文件本身保证会完成,但异步进程不会。如果你想让批处理文件等待生成的进程,请使用 "start /wait"。 - Duncan Bayne
啊,谢谢 :) 我不认为我有任何异步进程。使用 start /wait 是否等同于根本不使用 start?我基本上只是运行一些需要几秒钟的 .exe 文件,并执行一些重命名和移动操作。 - devuxer
start /wait 几乎与不使用 start 一样。但是,它会为生成的进程打开一个新窗口。如果不需要这样做,那么可以省略它。 - Tarydon

4

批处理文件只有在启动的进程完成后才会完成,除非您在批处理文件中使用start命令。作为简单的测试,您可以创建这样一个批处理文件:

notepad.exe

把这个设为你的预构建事件。你会发现只有在关闭记事本后,构建才开始。


+1 谢谢,我没有在任何批处理中使用“start”命令。 - devuxer

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