EventStore/EventStore — pull request #49 by jen20 (2013-06-14 17:01:39+00:00)
Title: Moving Windows build and packaging to psake

**This isn't finished yet but here for discussion etc**

##Aim

Building on Windows is currently a pain in the ass, as has been pointed out by lots of people! Nothing we're doing requires anything except the Windows SDK (7.1) to build, or VS2010 or VS2012.

The aim here is to get a one-command build that will produce usable binaries from a fresh clone of the repository.

##Actually running build

So far it runs like this (needs tidying up (on the task list) since it clearly currently fails at the aim of making it easier to build...):

From a regular PowerShell:

`Import-Module .\psake.psm1`
`Invoke-psake .\v8.ps1 Get-V8AndDependencies`
`Invoke-psake .\v8.ps1 Build-V8Libraries`
`Invoke-psake .\default.ps1 Build-js1`
`Invoke-psake .\default.ps1 Build-EventStore`

##Tasks

- [ ] Clean back to fresh repository
- [x] Get V8 and it's dependencies
- [x] Clean but retaining the V8 and dependency clones (it's big)
- [x] Build V8 & JS1 - VS2012
- [x] Build V8 & JS1 - VS2010
- [x] Build V8 & JS1 - Windows SDK
- [x] Build V8 & JS1 - Various common combinations of these - needs more testing
- [ ] JS1 versioning
- [ ] Generate AssemblyInfo during build with correct commit info
- [x] Build Event Store
- [x] Debug/Release Configurations
- [x] x64/Win32 Platforms
- [ ] Override of platform toolsets
- [ ] ILMerge Client API and Protobuf-net
- [ ] Build NuGet package for Client API
- [ ] Build Installer
- [ ] Package binaries
- [ ] One-command clean and full build
- [ ] One-command incremental build

##Derps

Detecting which platform toolset for Visual C++ is available is non-trivial, it involves interrogating system directories. See the function in v8.ps1.