什么是专业人士和是否为.Net中的每个项目创建了自动构建系统?

时间:2010-10-16 22:14:23

标签: .net build build-automation

我花了很多时间用psake配置自动构建,我想到为什么不使用我最熟悉的语言创建构建器?

psake是一个创建自动构建的优秀框架。我一直遇到的麻烦是学习powershell来运行更复杂的任务。我确信对于NAnt,msbuild等也可以这么说。

我解决这个问题的想法是为.Net中的给定解决方案创建构建系统。该过程的基本结构如下:

的build.bat

rem // Set the environment for msbuild.
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"

rem // Build the solution's builder.
msbuild.exe buildsolution.csproj

rem // Run the solution's builder.
BuildSolution.exe <task>

项目的BuildSolution

一个小型控制台应用程序:

  • 引用BuildSolution框架。
  • 包含每项任务的方法。例如:
    • 清洁
    • 构建
    • 测试
    • 提交
  • 注册任务及其依赖项,它可以运行。例如:
    • Builder.RegisterTask(x =&gt; x.Clean)
    • Builder.RegisterTask(x =&gt; x.Build).DependsOn(x =&gt; x.Clean)
    • Builder.RegisterTask(x =&gt; x.Test).DependsOn(x =&gt; x.Build)
    • Builder.RegisterTask(x =&gt; x.Commit).DependsOn(x =&gt; x.Test)
  • 运行构建器。例如Builder.Execute()

测试任务

最终测试任务将调用nunit,mstest,xunit等,但首先构建所需的命令行。这是使用.Net而不是PowerShell的一个例子。

当我开发我的应用程序时,我遵循ProjectName和ProjectName.Tests的简单命名约定。构建系统搜索* .Tests.dll并将它们包含在mstest命令行中。

使用.Net应用程序构建此任务的优点是:

  • 无需学习脚本语言即可找到测试dll。
  • 使用我熟悉且功能丰富的IDE进行开发。
  • 使用我熟悉且功能丰富的IDE调试任务。

摘要

除了测试任务中列出的优势之外,BuildSolution的优点还在于项目的新开发人员可以轻松理解和编辑构建系统。

您对BuildSolution的想法有何看法?

1 个答案:

答案 0 :(得分:4)

据我所知,您正在谈论推出自己的解决方案。我会将此与使用其他人的现有解决方案进行比较。

优点:

  • 很小
  • 学习简单
  • 调试简单
  • 很容易引入错误修复
  • 您无需在
  • 中获取新功能

缺点:

  • 你重新发明了轮子(这总是会增加成本。是否需要花费多少费用才能评估)
  • 您不能雇用已经了解您的构建系统的人员
  • 你必须实施自己的错误修复(是的,你会有错误),不能让公司以外的人照顾它,而不付钱
  • 你不能在网上谷歌你的错误,因为没有人知道你有他们
  • 如果它被任意数量的团队共享,那么你必须把它变成一个真实的项目,包括里程碑,积压,bug数据库等。
  • 如果您决定不将其置于中央项目中,则会复制代码。错误修复不会跨代码的不同副本进行传输。
  • 您缺少现有构建系统的大量功能(例如,集成到IDE或其他软件,监控,内置报告,内置运行状况通知,实验室管理等)
  • 如果有人知道如何将产品X集成到您的解决方案中,而不在您的工作中做额外的工作(即编写新功能),则无法进行谷歌搜索。

最终你应该尝试添加你能想到的任何自己的优点和缺点。特别是考虑商业立场。以小时/美元计算两种解决方案。从长远来看,使用较少的成本,或使用混合方法(短期内一个,长期另一个,制定迁移计划和时间表)。

话虽如此,我已经在不止一个团队中推出了自己的一个以上的问题。我也从我自己的使用转移到使用其他人的产品。我发现它很有价值,我认为它在某些情况下可能是正确的解决方案,特别是如果你将它用作一个短期的自举时。