Python是这个钉子的合适锤子吗?(构建脚本)
目前我正在使用Windows批处理文件来构建我的软件。它可以运行MSBuild、复制文件、创建ZIP文件、运行一些测试,包括subversion版本号等 但问题是,批处理文件是邪恶的。所以我想换个更好的。我计划用Python重新创建我的构建脚本。这是明智的选择吗?那么所有那些构建系统呢,比如Ant、SCons、Maven、Rake等等。使用其中任何一个都是更好的选择吗 注意:我不打算替换我的Visual Studio解决方案/项目文件。我只想编写创建软件版本所需的所有其他脚本Python是这个钉子的合适锤子吗?(构建脚本),python,build-process,build-automation,Python,Build Process,Build Automation,目前我正在使用Windows批处理文件来构建我的软件。它可以运行MSBuild、复制文件、创建ZIP文件、运行一些测试,包括subversion版本号等 但问题是,批处理文件是邪恶的。所以我想换个更好的。我计划用Python重新创建我的构建脚本。这是明智的选择吗?那么所有那些构建系统呢,比如Ant、SCons、Maven、Rake等等。使用其中任何一个都是更好的选择吗 注意:我不打算替换我的Visual Studio解决方案/项目文件。我只想编写创建软件版本所需的所有其他脚本 编辑:我有很好的理
编辑:我有很好的理由离开批处理,这不是我的问题所在。我想知道(例如)相对于普通的Python脚本,SCons给了我什么。我在其他地方看到过用于构建发行版的Python脚本,所以它不会很糟糕。实际上,我个人使用过perl脚本来自动构建发布。我想任何脚本语言都可以很容易地自动化这个过程。如果这很容易实现(而且可能比批处理脚本更好),为什么不试试呢?在您提到Python和SCON时,我会说选择SCON。毕竟是Python。是的,以上任何一项都比手工构建脚本更好。我个人认为,考虑到这一点,脚本是最后的选择
- 只需做一点工作,就可以通过使用其他组件扩展MSBuild来为您完成所有这些事情
- 类似于MSBuild的第三方等价物也可以做同样的事情
- 像这样的整个工具也可以做同样的事情,并且更容易配置和扩展
- 完全访问文件系统
- 您可以轻松访问.NET对象
- 您可以轻松访问COM对象
对我来说,一种模糊的邪恶感并不是我浪费精力去“修复”那些没有坏掉的东西的理由。除非有一个明显的优势来改变(这是一个不太坏的事情),否则这将是徒劳的。 < P>你可以为你已经安装的微软NMAKE工具创建自定义的Mag文件。使用这样的工具(scon、Maven等属于同一类)可以提供比常规脚本多得多的功能
主要的好处是可以跟踪文件之间的依赖关系以及更改的时间戳。例如,您可以使.zip文件依赖于其他一些文件,因此只有在其中一些文件同时发生更改时,.zip才会重新打包。就像源代码及其编译形式一样。Python非常可移植。SCons经过现场测试,性能可靠。鉴于你所知道的(从你所解释的),为什么还要问这个问题 如果您要维护某个东西,那么这不仅仅是让它构建,还需要向用户解释为什么它无法构建,这在帮助用户自助的同时为您节省了大量非常令人沮丧的问题 我想不出一个缺乏Python的现代生产操作系统,除非你进入嵌入式/研究领域
所以,我的回答是,您回答了自己的问题:)我建议在构建脚本中使用NAnt而不是python。 我的理由是:
- 它已经定义了任务,您所需要做的就是编写XML并将其指向正确的位置。如果您与不懂python的人一起工作,那么XML可能比学习一门新语言更不可怕李>
- NAnt被设计为在windows.Net环境中工作,因此它已经可以执行MSBuild和NUnit任务李>
- 如果您已经在用C#编写,如果您需要扩展NAnt来完成新任务,那么您就不会在项目中添加其他语言
- 您可以挂接到(用于连续构建)。我认为这是你使用NAnt的主要原因李>
最后,如果批处理文件用于不适合处理的项目,则批处理文件是有害的。对于一个或两个文件项目,批处理文件就可以了。为什么要使用python?如果您的构建脚本没有损坏,请不要修复它。如果您在更新它以处理项目的新分支时遇到问题,那么您可能需要考虑重写它。虽然像NANT或MSBuild这样的工具可以完成这项工作,但我不会使用Python。我愿意