psake is a simple build automation tool written in powershell, and works well on Microsoft platform.

This is a really simple example that cleans bin folder, run msbuild to build the solution, and clean up pdb and xml files afterward.

[sourcecode language="powershell"]

properties {
$BuildConfiguration = if ($BuildConfiguration -eq $null ) { "debug" } else {
$BuildConfiguration }
$BuildScriptsPath = Resolve-Path .
$base_dir = Resolve-Path ..
$packages = "$base_dir\packages"
$build_dir = "$base_dir\Sushiwa\bin"
$sln_file = "$base_dir\Sushiwa.sln"
}

task default -depends CleanUp, Compile

task CleanUp {
@($build_dir) | aWhere-Object { Test-Path $_ } | ForEach-Object {
Write-Host "Cleaning folder $_..."
Remove-Item $_ -Recurse -Force -ErrorAction Stop
}
}

task Compile {
Write-Host "Compiling $sln_file in $BuildConfiguration mode to $build_dir"
Exec { msbuild "$sln_file" /t:Clean /t:Build /p:Configuration=$BuildConfiguration
/m /nr:false /v:q /nologo /p:OutputDir=$build_dir }

Get-ChildItem -Path $build_dir -Rec | Where {$_.Extension -match "pdb"} | Remove-Item
Get-ChildItem -Path $build_dir -Rec | Where {$_.Extension -match "xml"} | Remove-Item
}
[/sourcecode]


Andrew Chaa

another day, another PR