【问题标题】:psake vs. rake for .NET builds.NET 构建的 psake 与 rake
【发布时间】:2010-10-05 19:34:13
【问题描述】:

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

我的构建没有太复杂或不寻常的地方。它需要从 Mercurial 存储库中提取我的源代码,构建 Visual Studio 10 解决方案,对配置文件进行一些转换,构建/运行基于数据库(Data Dude)项目的 SQL 脚本,复制 VS 的 Web Publish,并且可能做一些其他的基本文件同步。

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

提前致谢。

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

【问题讨论】:

    标签: .net build rake psake


    【解决方案1】:

    我不得不同意 Derick 的评估。这实际上取决于您和您的团队是否对 Ruby 或 Powershell 感觉更舒服(以及您认为学习更有价值)。两者都有自己的长处和短处。两者都比 XML 恕我直言。正如德里克所说,我也有自己的偏见,因为我是 psake 的原作者。 :)

    psake/PowerShell 的几个优点:

    1. PowerShell 已安装在 Windows 7 和 Server 2008 上。可轻松安装在 XP 和 2003 上。
    2. 在版本控制中轻松包含在您的解决方案中。 (活动部件更少。)
    3. 您可以使用 PowerShell 命令行并将其逐字粘贴到 psake 任务中。
    4. Microsoft 和第 3 方创建了大量 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 进行构建 :)
    • 我是 Powerhsell 的忠实粉丝,因此 Psake 一直是我项目的自然选择。与更传统的声明式构建系统相比,命令式构建系统是一股新鲜空气。
    【解决方案2】:

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

    话虽如此 - 对于我更愿意使用的工具,我显然有自己的偏见和偏好。因此,请谨慎对待,并了解我的喜好...

    ........

    老实说,我认为这不是哪种工具可以满足您的需求的问题,而更多的是哪种工具适合您的技能和舒适度的问题。 psake 和 rake+albacore 都具有几乎相同的功能。他们都工作得很好。与其他工具相比,它们都使您的工作变得非常容易。但根据他们的背景和来自哪里,他们有不同的方法和思维方式。

    您是否更喜欢使用 Microsoft 平台的一堆工具?或者您是否对典型 MS 堆栈之外的工具感到满意,但仍为在 MS 堆栈上构建软件的人提供价值。

    您是否更愿意通过 powershell 为您的构建工具提供开箱即用的支持?您是否希望拥有类似 c# 的体验,能够将 C# 和其他 .NET 代码合并到您的构建过程中?您是否希望能够使用各种 powershell 插件来帮助自动化 Windows 的各个方面进行部署?

    或者您更愿意拥有一个跨平台、非常开放的系统,让您使用 ruby​​ / rake 编写的代码获得更自然的语言体验?您对部署的 *nix 风格的工具和命令、ssh 和远程进程执行感到满意吗?

    你说你不介意在构建服务器上安装 ruby​​,它回答了这个问题的一部分,让你可以选择。不过,还有很多问题需要回答。

    如果您更熟悉 MS 堆栈并希望获得基于 MS 的工具的开箱即用体验,那么请使用 powershell。如果您想扩展您的视野并稍微摆脱 MS 堆栈,使用易于集成和使用的工具集,以了解 Ruby 世界的全部内容,那么请使用 ruby​​/rake/长鳍金枪鱼。

    我希望这会有所帮助,尽管我没有直接回答你应该使用哪一个。不过,希望我已经给了你足够的思考来确定哪一个更适合你/你的团队。

    【讨论】:

    • 感谢 Derick 和 James,总是很高兴直接从马的嘴里得到答案!尽管我在 MS 堆栈之外没有任何问题,但我最终还是选择了 psake。可移植性和可用 cmdlet 的广度最终赢得了胜利,尽管 PowerShell 在酷炫的部门中无法触及 Ruby,但它本身就是一种极具表现力的小语言,足以满足我的需求。再次感谢!
    • ya - cmdlet 是非常棒的小东西。我们使用 powershell 进行自动化部署,非常棒。适合这项工作的工具,对吧? :)
    • 链接已损坏。
    【解决方案3】:

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

    Crawler-Lib Build-Tools Samples

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多