这两个项目设置都允许我执行自定义命令。每个的优点或缺点是什么?自定义构建步骤和构建后事件之间的区别是什么?
5
A
回答
9
差别很大。自定义构建步骤允许您指定依赖项和输出。这允许构建系统在执行该步骤时确定并且当输出已经是最新时跳过它。生成后事件是总是在项目需要构建并且其时序已修复时执行。
0
似乎@Hans回答得到它切换,主要区别是,如果没有文件需要建立,没有建立事件会发生。
从MSDN文档:
生成事件和自定义生成以下顺序与其他构建步骤一起运行步骤:
Pre-Build event
Custom build tools on individual files
MIDL
Resource compiler
The C/C++ compiler
Pre-Link event
Linker or Librarian (as appropriate)
Manifest Tool
BSCMake
Custom build step on the project
Post-Build event
的项目和岗位的自定义生成步骤生成事件在所有其他构建过程完成后按顺序运行。
只有构建成功达到构建过程中的那些点时,才会执行构建事件。如果在构建中发生错误,则不会发生构建后事件;如果错误发生在链接阶段之前,则不会发生预链接或生成后事件。另外,如果不需要链接文件,则不会发生预链接事件。预链接事件在不包含链接步骤的项目中也不可用。 如果不需要构建文件,则不会发生构建事件。
从Visual Studio C++开发环境中,有三种基本方式来定制生成过程:
自定义生成步骤 自定义生成步骤是与项目相关的生成规则。自定义构建步骤可以指定要执行的命令行,任何其他输入或输出文件以及要显示的消息。有关更多信息,请参见如何:向MSBuild项目添加自定义构建步骤。
自定义构建工具 自定义构建工具是与一个或多个文件关联的构建规则。自定义构建步骤可以将输入文件传递到自定义构建工具,从而生成一个或多个输出文件。例如,MFC应用程序中的帮助文件是使用自定义构建工具构建的。有关更多信息,请参阅如何:将自定义生成工具添加到MSBuild项目并指定自定义生成工具。 构建事件
构建事件让您自定义项目的构建。有三个构建事件:预构建,预链接和构建后。构建事件可让您指定在构建过程的特定时间发生的操作。例如,在项目完成构建后,您可以使用构建事件向regsvr32.exe注册文件。有关更多信息,请参阅指定构建事件。
相关问题
- 1. Jenkins - 构建步骤之间的条件
- 2. Visual Studio构建步骤和MSBuild之间的差异构建步骤
- 3. 构建和制造之间的区别?
- 4. 自定义构建步骤中的自动版本文件步骤
- 5. 什么应该是数据库的自动化构建步骤?
- 6. 用CMake创建Visual Studio“自定义构建步骤”
- 7. Jenkins - 构建步骤
- 8. 构建和补丁有什么区别?
- 9. 什么是自定义控件?用户控件和自定义控件之间的基本区别是什么?
- 10. Jenkins在构建后动作后运行构建后步骤
- 11. 预构建和构建后事件
- 12. 在Eclipse中Maven构建和Maven构建...有什么区别?
- 13. 这些构建器模式之间有什么区别?
- 14. Eclipse中的后期构建步骤CDT
- 15. 在IAR中有多个输入的自定义构建步骤
- 16. 获取包含自定义构建步骤的目录
- 17. Intellij IDEA项目中的自定义构建步骤
- 18. 更改自定义构建步骤的路径
- 19. 析构函数和函数之间的区别是什么?
- 20. 结构和列表ADT之间的用法区别是什么?
- 21. 事件驱动和异步之间有什么区别?在epoll和AIO之间?
- 22. TFS 2015不断删除自定义构建步骤
- 23. VS2012自定义构建步骤 - 将输出视为内容
- 24. 如何在Visual Studio 6中设置自定义构建步骤?
- 25. 可能会忽略vs2005自定义构建步骤失败?
- 26. SonarQube无法完成构建后步骤
- 27. 在构建步骤中使用构建后行为
- 28. Junkins在Jenkins工作中的构建步骤是什么?
- 29. Jenkins管道中的节点,阶段和步骤之间的区别是什么?
- 30. 避免CopyFilesToOutputDirectory构建步骤
re:**生成后事件总是执行** >><作为测试,我在我的*生成后事件*中添加了'echo HELLO WORLD'。 (1)按照预期显示“HELLO WORLD”。 (2)如果我再次右键单击我的项目上的* Build * ...'HELLO WORLD'不会显示在* Visual Studio Output,Build窗口的输出*中。 (3)执行*清理*后面*生成* ...和'HELLO WORLD'再次出现。所以看起来,在Visual Studio 2012中(* Platform Tooolset *在项目配置中设置为v90)... **后构建事件仅在实际构建时执行。**我错过了什么吗? – Pressacco 2013-06-19 18:14:54