针对.NET构建的psake与rake

时间:2010-10-05 19:34:14

标签: .net build rake 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。我以为我会提到它,以防一个构建工具比另一个构建工具更好。

3 个答案:

答案 0 :(得分: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,这可能会让他们在部署自动化时感觉更舒服。 (部署脚本不是这样的黑盒子。)
  6. rake / Ruby的一些优点:

    1. Rake拥有更大的社区,因为它在Ruby社区中被广泛使用。
    2. Ruby比PowerShell更具表现力,但您可能希望在构建脚本中保持简单。
    3. Albacore使用rake构建.NET项目变得更加容易。
    4. Rake有一个很好的命名空间机制来组合任务。
    5. 这两种解决方案都可以帮助您构建解决方案。选择适合您团队的那个。希望有所帮助。

答案 1 :(得分: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 /长鳍。

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

答案 2 :(得分:0)

我目前正在开发基于PowerShell的构建工具,它将XML配置与使用PowerShell本身的系统一起使用和扩展。我想要一个简单的构建工具,可以扩展和定制,以适应大多数构建过程。这是项目示例页面:

Crawler-Lib Build-Tools Samples