18

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

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

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

提前致谢。

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

4

3 回答 3

24

我不得不同意 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 有一个很好的命名空间机制来将任务组合在一起。

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

于 2010-10-07T04:55:55.700 回答
18

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

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

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

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

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

您是否希望通过 powershell 直接支持您的构建工具?您是否希望拥有类似 ac# 的经验,能够将 C# 和其他 .NET 代码合并到您的构建过程中?您是否希望能够使用各种插件来帮助自动化 Windows 的各个方面进行部署?

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

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

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

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

于 2010-10-05T20:19:53.827 回答
0

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

Crawler-Lib 构建工具示例

于 2014-08-12T11:49:52.290 回答