【发布时间】:2010-10-16 22:14:23
【问题描述】:
刚刚花了令人沮丧的时间使用 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 => x.Clean)
- Builder.RegisterTask( x => x.Build ).DependsOn( x => x.Clean )
- Builder.RegisterTask( x => x.Test ).DependsOn( x => x.Build )
- Builder.RegisterTask( x => x.Commit ).DependsOn( x => x.Test )
- 运行构建器。例如 Builder.Execute()
测试任务
最终测试任务将调用 nunit、mstest、xunit 等,但首先构建所需的命令行。这是一个使用 .Net 而不是 PowerShell 对我来说是赢家的例子。
当我开发我的应用程序时,我遵循 ProjectName 和 ProjectName.Tests 的简单命名约定。构建系统搜索 *.Tests.dll 并将它们包含在 mstest 命令行中。
使用 .Net 应用程序构建此任务的优点是:
- 无需学习脚本语言即可找到测试 dll。
- 使用我熟悉且功能丰富的 IDE 进行开发。
- 使用我熟悉且功能丰富的 IDE 调试任务。
总结
除了测试任务中列出的优点之外,BuildSolution 理念的优点是项目的新开发人员可以说很容易理解和编辑构建系统。
您认为 BuildSolution 的想法有什么缺点?
【问题讨论】:
标签: .net build build-automation