markrendle/Simple.Web — pull request #43 by ianbattersby (2013-01-26 11:44:19+00:00)
Title: Moved to RAKE build process

After much effort towards resolving issues between FAKE and Mono (including contributions to the FAKE project) the friction integrating this with CI builds - and enabling other operations (e.g. NuGet pack & publish) on *nix - just became to high.

This moves us away from FAKE and platform-specific versions of build files to a generic RAKE approach which aims to handle all operations regardless of platform, and regardless of CI environment.

Visual Studio based non-releasable builds should still complete without issue but those from the command-line will require Ruby >= 1.9.2 installing and gem dependencies (installable via `InstallGems.bat` or `installgems.sh`).

Includes:-
* Improved repository structure (`git mv` used where possible)
* Build options for appropriate workflow-appropriate build times
* Central versioning via `./VERSION.txt`
* `CommonAssemblyInfo.cs` generation
* NuGet restoration of packages (`packages` no longer committed to repo)
* NuGet packaging and publishing (including nuspec versioning)
* Custom build of xunit console runner ([to resolve *nix path option values](http://xunit.codeplex.com/SourceControl/network/forks/ianbattersby/xunit/contribution/3981))
* Updated README.md with build instructions

Doesn't include (to-do):-
* Tagging of branch upon restore to `remote`

Tested:-
* MS Visual Studio 2012 clean build
* Windows 8 rake-based builds
* Windows 2012 rake-based CI build
* OpenSUSE rake-based Mono 3.0.3-compiled CI build
* Ubuntu rake-based Mono 2.10.9 CI build ([still fails due to variance validity issue](https://bugzilla.xamarin.com/show_bug.cgi?id=6360)).
* Mac OS X 10.8 (ML) rake-based Mono 3.0.3-binary CI build

Caveats:-
* The NuGet package + publish has only been tested against local nuget server, use with caution on first run.
* Change in repository may cause pain for some users, but better now than in future. `git mv` was used where possible to help git work things out.

PLEASE READ the updated README.md for full details.