我正在使用Visual Studio中的预生成事件来运行批处理(.bat)文件,该文件执行一些代码生成操作(具体而言,我正在运行SqlMetal.exe以生成LinqToSql代码)。
批处理文件是否保证在编译开始之前完成?还是它异步运行批处理程序?
底线:我希望确保编译新代码,而不是旧代码。
如果无法保证 - 有哪些解决方案可用?
我正在使用Visual Studio中的预生成事件来运行批处理(.bat)文件,该文件执行一些代码生成操作(具体而言,我正在运行SqlMetal.exe以生成LinqToSql代码)。
批处理文件是否保证在编译开始之前完成?还是它异步运行批处理程序?
底线:我希望确保编译新代码,而不是旧代码。
如果无法保证 - 有哪些解决方案可用?
是的,但请注意,如果您的预构建步骤中有多个步骤,只有最后一步会被检查错误。详情请参见Gotcha! Visual Studio Pre/Post-Build Events。
start /wait
是否等同于根本不使用 start
?我基本上只是运行一些需要几秒钟的 .exe 文件,并执行一些重命名和移动操作。 - devuxer批处理文件只有在启动的进程完成后才会完成,除非您在批处理文件中使用start命令。作为简单的测试,您可以创建这样一个批处理文件:
notepad.exe
把这个设为你的预构建事件。你会发现只有在关闭记事本后,构建才开始。