针对.NET构建的psake与rake

Tod*_*ier 18 .net rake build psake

我正在研究用于ASP.NET MVC 2应用程序的构建工具.我喜欢使用脚本语言而不是XML的想法,并将我的选择范围缩小到psake或rake.我对Ruby或PowerShell没有多少经验,但我也愿意学习.如果那是我最好的选择,我不介意在我的构建服务器上安装Ruby.

我的构建没有太复杂或不寻常.它需要从Mercurial仓库中获取源代码,构建Visual Studio 10解决方案,对配置文件进行一些转换,基于Database(Data Dude)项目构建/运行SQL脚本,复制VS的Web Publish,以及做一些其他基本文件同步.

任何人都有可以比较它们的rake和psake的经验吗?一个人在功能方面是否优于另一个,还是仅仅归结为脚本语言偏好?

提前致谢.

编辑:我还没有CI解决方案,但我倾向于使用TeamCity.我以为我会提到它,以防一个构建工具比另一个更好.

Jam*_*acs 24

我不得不同意Derick的评估.这真的取决于你和你的团队是否对Ruby或Powershell感觉更舒服(以及你在学习中看到的更多价值).两者都有自己的优点和缺点.要么比XML恕我直言更好.正如德里克所说,我也有自己的偏见,因为我是psake的原创作者.:)

psake/PowerShell的一些优点:

  1. PowerShell已安装在Windows 7和Server 2008上.轻松安装在XP和2003上.
  2. 在版本控制中轻松包含您的解决方案.(移动部件更少.)
  3. 您可以使用PowerShell命令行并将其Vertabim粘贴到psake任务中.
  4. Microsoft和第三方创建了大量cmdlet.
  5. 您的IT人员/女士们可能知道一些PowerShell,这可能会使他们在部署自动化时感觉更舒服.(部署脚本不是这样的黑盒子.)

rake/Ruby的一些优点:

  1. Rake拥有更大的社区,因为它通过Ruby社区广泛使用.
  2. Ruby是一种比PowerShell更具表现力的语言,尽管您可能希望在构建脚本中保持简单.
  3. Albacore使用rake构建.NET项目变得更加容易.
  4. Rake有一个很好的命名空间机制来组合任务.

两种解决方案都可以帮助您构建解决方案 选择适合您团队的那个.希望有所帮助.

  • 我们现在使用PowerShell进行部署.在ruby/rake/capistrano/chef和powershell之间以及它所有的cmdlet之间的评估中,powershell因你列出的所有原因而最有意义.对于Windows机箱上的那种东西真的很不错.但我们仍然使用ruby/rake/albacore进行构建:) (2认同)

Der*_*ley 18

如果您还没有这样做,请查看我的Albacore项目.它是构建.NET解决方案的一系列rake任务,并且可以使.NET解决方案更容易使用Rake.您可以从http://albacorebuild.net获取所需的所有信息

话虽如此 - 我显然对我宁愿使用哪种工具有自己的偏见和偏好.所以带着一点盐,理解我的喜好......

..................

老实说,我认为哪个工具可以满足您的需求,而不是哪个工具适合您的技能和舒适程度的问题.psake和rake + albacore都具有相同的功能.他们都很好.与其他工具相比,它们使您的工作变得非常轻松.但根据他们的背景和来源,他们有不同的方法和思维方式.

您是否更熟悉所有Microsoft平台的工具?或者您是否熟悉典型MS堆栈之外的工具,但仍然为在MS堆栈上构建软件的人员提供价值.

你愿意开始使用PowerShell支持你的构建工具吗?你是否愿意拥有类似#c的体验,能否将C#和其他.NET代码整合到你的构建过程中?您是否希望能够使用powershell的各种插件来帮助自动化窗口的各个方面,以进行部署?

或者您是否愿意拥有一个跨平台,非常开放的系统,通过ruby/rake为您提供更自然的语言体验?您是否熟悉*nix样式工具和命令,ssh以及部署的远程流程执行?

你说你不介意在构建服务器上安装ruby,它会回答这个问题的一部分并让你对选项保持开放态度.不过,还有很多问题需要回答.

如果您对MS堆栈更加满意,并希望获得基于MS的工具的开箱即用体验,那么请使用PowerShell.如果你想扩展你的视野并稍微离开MS堆栈,使用易于集成和使用的工具集来了解Ruby世界的所有内容,那么请使用ruby/rake /长鳍金枪鱼.

我希望有所帮助,即使我没有直接回答你应该使用哪一个.希望我已经给了你足够的时间来考虑确定哪一个对你/你的团队更好.