diff --git a/.gitignore b/.gitignore
index 9177c990..5dafca16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,5 @@ bin
*.vsdoc
*.XML
Version1.cs
-src/Numerics/Algorithms/LinearAlgebra/Mkl/*.cs
\ No newline at end of file
+src/Numerics/Algorithms/LinearAlgebra/Mkl/*.cs
+out
\ No newline at end of file
diff --git a/build/readme.mkd b/build/readme.mkd
new file mode 100644
index 00000000..bf5cb8de
--- /dev/null
+++ b/build/readme.mkd
@@ -0,0 +1,30 @@
+# Building Math.NET Numerics
+
+## Managed
+
+The Math.NET Numerics solution is structured such that it is best to compile the whole
+solution (MathNet.Numerics.sln) directly in VisualStudio or by MsBuild.
+
+All artifacts will be placed in a generated "out" directory in the solution root,
+structured as follows:
+
+/lib/Net40: Binaries for .Net 4.0
+/lib/SL4: Binaries for Silverlight 4
+
+/debug/Net40: Debug Build for .Net 4.0
+/debug/SL4: Debug Build for Silverlight 4
+
+/test/Net40: Unit Tests for .Net 4.0
+/test/debug/Net40: Debug Build Unit Tests for .Net 4.0
+
+Windows Phone 7 builds will likely be added as "WP" subdirectories.
+Note that there are currently only unit tests for .Net 4.0 builds available.
+
+## Native Bindings
+
+TODO
+
+## Continuous Integration
+
+We use TeamCity both for continuous integration and release builds & deployments,
+the configuration and scripts are located in this folder and subfolders
\ No newline at end of file
diff --git a/src/FSharp/FSharp.fsproj b/src/FSharp/FSharp.fsproj
index 0da44018..353e005d 100644
--- a/src/FSharp/FSharp.fsproj
+++ b/src/FSharp/FSharp.fsproj
@@ -18,7 +18,7 @@
full
false
false
- bin\Debug\
+ ..\..\out\debug\Net40\
DEBUG;TRACE
3
@@ -26,9 +26,10 @@
pdbonly
true
true
- bin\Release\
+ ..\..\out\lib\Net40\
TRACE
3
+ ..\..\out\lib\Net40\MathNet.Numerics.FSharp.xml
MathNet.Numerics.FSharp.XML
diff --git a/src/FSharpUnitTests/FSharpUnitTests.fsproj b/src/FSharpUnitTests/FSharpUnitTests.fsproj
index 2080d67e..34b6fed9 100644
--- a/src/FSharpUnitTests/FSharpUnitTests.fsproj
+++ b/src/FSharpUnitTests/FSharpUnitTests.fsproj
@@ -8,7 +8,7 @@
{f2f8032b-a31d-4e33-a05e-f2cdcbfaa75d}
Exe
FSharpUnitTests
- FSharpUnitTests
+ MathNet.Numerics.FSharp.UnitTests
v4.0
FSharpUnitTests
@@ -18,7 +18,7 @@
full
false
false
- bin\Debug\
+ ..\..\out\test\debug\Net40\
DEBUG;TRACE
3
@@ -26,7 +26,7 @@
pdbonly
true
true
- bin\Release\
+ ..\..\out\test\Net40\
TRACE
3
diff --git a/src/MSUnitTests/MSUnitTests.csproj b/src/MSUnitTests/MSUnitTests.csproj
index 4d2477df..0392e84f 100644
--- a/src/MSUnitTests/MSUnitTests.csproj
+++ b/src/MSUnitTests/MSUnitTests.csproj
@@ -19,7 +19,7 @@
true
full
false
- bin\Debug\
+ ..\..\out\test\debug\Net40\
DEBUG;TRACE
prompt
4
@@ -27,7 +27,7 @@
pdbonly
true
- bin\Release\
+ ..\..\out\test\Net40\
TRACE
prompt
4
diff --git a/src/MathNet.Numerics.sln b/src/MathNet.Numerics.sln
index 87265ee2..935903e9 100644
--- a/src/MathNet.Numerics.sln
+++ b/src/MathNet.Numerics.sln
@@ -24,6 +24,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{4D50FB34-10BC-495A-8B2F-482E34B4D771}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{49EE74BD-301F-4C3B-B76A-07F90CC88CE7}"
+EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = MathNet.Numerics.vsmdi
@@ -69,4 +73,11 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {BC81EA37-8EE6-4BF9-B8A9-B30497AEF8B1} = {49EE74BD-301F-4C3B-B76A-07F90CC88CE7}
+ {8239A6FF-1EF3-4DA4-A860-95C392DD6899} = {49EE74BD-301F-4C3B-B76A-07F90CC88CE7}
+ {F2F8032B-A31D-4E33-A05E-F2CDCBFAA75D} = {4D50FB34-10BC-495A-8B2F-482E34B4D771}
+ {624FB757-A724-4B0D-85EB-F0563CE43A33} = {4D50FB34-10BC-495A-8B2F-482E34B4D771}
+ {8C9A5D3F-A20C-4D24-A09C-98E187A8D720} = {4D50FB34-10BC-495A-8B2F-482E34B4D771}
+ EndGlobalSection
EndGlobal
diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj
index ca93c503..ef2b86d8 100644
--- a/src/Numerics/Numerics.csproj
+++ b/src/Numerics/Numerics.csproj
@@ -39,7 +39,7 @@
true
full
false
- bin\Debug\
+ ..\..\out\debug\Net40\
TRACE;DEBUG
prompt
4
@@ -50,11 +50,11 @@
pdbonly
true
- bin\Release\
+ ..\..\out\lib\Net40\
TRACE
prompt
4
- MathNet.Numerics.XML
+ ..\..\out\lib\Net40\MathNet.Numerics.xml
AllRules.ruleset
diff --git a/src/Silverlight/Silverlight.csproj b/src/Silverlight/Silverlight.csproj
index 548d059a..13653ed3 100644
--- a/src/Silverlight/Silverlight.csproj
+++ b/src/Silverlight/Silverlight.csproj
@@ -10,7 +10,7 @@
Library
Properties
MathNet.Numerics
- MathNet.Numerics.Silverlight
+ MathNet.Numerics
Silverlight
v4.0
$(TargetFrameworkVersion)
@@ -28,7 +28,7 @@
true
full
false
- Bin\Debug
+ ..\..\out\debug\SL4\
DEBUG;TRACE;SILVERLIGHT
true
true
@@ -38,12 +38,13 @@
pdbonly
true
- Bin\Release
+ ..\..\out\lib\SL4\
TRACE;SILVERLIGHT
true
true
prompt
4
+ ..\..\out\lib\SL4\MathNet.Numerics.xml
diff --git a/src/UnitTests/UnitTests.csproj b/src/UnitTests/UnitTests.csproj
index 9b5f591e..13e885d3 100644
--- a/src/UnitTests/UnitTests.csproj
+++ b/src/UnitTests/UnitTests.csproj
@@ -39,7 +39,7 @@
true
full
false
- bin\Debug\
+ ..\..\out\test\debug\Net40\
DEBUG;TRACE
prompt
4
@@ -49,7 +49,7 @@
pdbonly
true
- bin\Release\
+ ..\..\out\test\Net40\
TRACE
prompt
4