diff --git a/SharpDevelop.Tests.sln b/SharpDevelop.Tests.sln
index 7437dbc313..97f1716a68 100644
--- a/SharpDevelop.Tests.sln
+++ b/SharpDevelop.Tests.sln
@@ -28,6 +28,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDevelop", "src\Main\Sh
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker120", "src\Main\ICSharpCode.SharpDevelop.BuildWorker120\ICSharpCode.SharpDevelop.BuildWorker120.csproj", "{6F273DA5-E10C-45A6-9071-7313ECD98C90}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker140", "src\Main\ICSharpCode.SharpDevelop.BuildWorker140\ICSharpCode.SharpDevelop.BuildWorker140.csproj", "{7BA66A6B-1ED8-4B4C-970C-8928E891418B}"
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "src\Libraries\cecil\Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}"
@@ -290,6 +292,10 @@ Global
{6F273DA5-E10C-45A6-9071-7313ECD98C90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F273DA5-E10C-45A6-9071-7313ECD98C90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F273DA5-E10C-45A6-9071-7313ECD98C90}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Release|Any CPU.Build.0 = Release|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.ActiveCfg = net_4_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.Build.0 = net_4_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Any CPU.ActiveCfg = net_4_0_Release|Any CPU
@@ -666,6 +672,7 @@ Global
{8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{6F273DA5-E10C-45A6-9071-7313ECD98C90} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{D68133BD-1E63-496E-9EDE-4FBDBF77B486} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
diff --git a/SharpDevelop.sln b/SharpDevelop.sln
index 4442f37122..1de7a8d728 100644
--- a/SharpDevelop.sln
+++ b/SharpDevelop.sln
@@ -24,6 +24,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDevelop", "src\Main\Sh
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker120", "src\Main\ICSharpCode.SharpDevelop.BuildWorker120\ICSharpCode.SharpDevelop.BuildWorker120.csproj", "{6F273DA5-E10C-45A6-9071-7313ECD98C90}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker140", "src\Main\ICSharpCode.SharpDevelop.BuildWorker140\ICSharpCode.SharpDevelop.BuildWorker140.csproj", "{7BA66A6B-1ED8-4B4C-970C-8928E891418B}"
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "src\Libraries\cecil\Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}"
@@ -237,6 +239,10 @@ Global
{6F273DA5-E10C-45A6-9071-7313ECD98C90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F273DA5-E10C-45A6-9071-7313ECD98C90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F273DA5-E10C-45A6-9071-7313ECD98C90}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}.Release|Any CPU.Build.0 = Release|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.ActiveCfg = net_4_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.Build.0 = net_4_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Any CPU.ActiveCfg = net_4_0_Release|Any CPU
@@ -527,6 +533,7 @@ Global
{8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{6F273DA5-E10C-45A6-9071-7313ECD98C90} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{D68133BD-1E63-496E-9EDE-4FBDBF77B486} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
diff --git a/src/Main/Base/Project/Util/DotnetDetection.cs b/src/Main/Base/Project/Util/DotnetDetection.cs
index a6ae7a59e6..191c1ecb2d 100644
--- a/src/Main/Base/Project/Util/DotnetDetection.cs
+++ b/src/Main/Base/Project/Util/DotnetDetection.cs
@@ -95,5 +95,16 @@ namespace ICSharpCode.SharpDevelop
return key != null && key.GetValue("Install") as int? >= 1;
}
}
+
+ ///
+ /// Gets whether the Microsoft Build Tools 2015 (MSBuild 14.0) is installed.
+ ///
+ public static bool IsBuildTools2015Installed()
+ {
+ // HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\BuildTools\Servicing\14.0
+ using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\DevDiv\BuildTools\Servicing\14.0\MSBuild")) {
+ return key != null && key.GetValue("Install") as int? >= 1;
+ }
+ }
}
}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/Configuration/AssemblyInfo.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/Configuration/AssemblyInfo.cs
new file mode 100644
index 0000000000..8787efdda9
--- /dev/null
+++ b/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/Configuration/AssemblyInfo.cs
@@ -0,0 +1,27 @@
+// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Reflection;
+
+[assembly: AssemblyTitle("SharpDevelop Build Worker for MSBuild 14.0")]
+[assembly: AssemblyDescription("Runs MSBuild 14.0")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: CLSCompliant(true)]
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/ICSharpCode.SharpDevelop.BuildWorker140.csproj b/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/ICSharpCode.SharpDevelop.BuildWorker140.csproj
new file mode 100644
index 0000000000..25d5ca2be7
--- /dev/null
+++ b/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/ICSharpCode.SharpDevelop.BuildWorker140.csproj
@@ -0,0 +1,99 @@
+
+
+
+ {7BA66A6B-1ED8-4B4C-970C-8928E891418B}
+ Debug
+ AnyCPU
+ Exe
+ ICSharpCode.SharpDevelop.BuildWorker
+ ICSharpCode.SharpDevelop.BuildWorker140
+ v4.5.1
+ False
+ False
+ 4
+ False
+ ..\..\..\bin\
+ True
+ ..\ICSharpCode.SharpDevelop.snk
+ False
+ File
+ False
+ -Microsoft.Globalization#CA1303
+
+
+ False
+ obj\$(Configuration)\
+
+
+ true
+ Full
+ False
+ True
+ DEBUG;TRACE
+ obj\
+
+
+ False
+ None
+ True
+ False
+ TRACE
+
+
+ False
+ Off
+ 4194304
+ AnyCPU
+ 4096
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+ Configuration\GlobalAssemblyInfo.cs
+
+
+ BuildJob.cs
+
+
+ EventSource.cs
+
+
+ EventTypes.cs
+
+
+ ExtendedBinaryReader.cs
+
+
+ HostProcess.cs
+
+
+ MSBuild40.cs
+
+
+ Program.cs
+
+
+
+
+
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+ ICSharpCode.Core
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/app.config b/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/app.config
new file mode 100644
index 0000000000..155efda1cf
--- /dev/null
+++ b/src/Main/ICSharpCode.SharpDevelop.BuildWorker140/app.config
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Main/SharpDevelop/Project/Build/MSBuildEngine/BuildWorkerManager.cs b/src/Main/SharpDevelop/Project/Build/MSBuildEngine/BuildWorkerManager.cs
index 1fd518f4bd..8ec05b604e 100644
--- a/src/Main/SharpDevelop/Project/Build/MSBuildEngine/BuildWorkerManager.cs
+++ b/src/Main/SharpDevelop/Project/Build/MSBuildEngine/BuildWorkerManager.cs
@@ -34,6 +34,7 @@ namespace ICSharpCode.SharpDevelop.Project
readonly List freeWorkers = new List();
readonly string workerProcessName;
+ public static readonly BuildWorkerManager MSBuild140 = new BuildWorkerManager("ICSharpCode.SharpDevelop.BuildWorker140.exe");
public static readonly BuildWorkerManager MSBuild120 = new BuildWorkerManager("ICSharpCode.SharpDevelop.BuildWorker120.exe");
public static readonly BuildWorkerManager MSBuild40 = new BuildWorkerManager("ICSharpCode.SharpDevelop.BuildWorker40.exe");
public static readonly BuildWorkerManager MSBuild35 = new BuildWorkerManager("ICSharpCode.SharpDevelop.BuildWorker35.exe");
diff --git a/src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs b/src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs
index 15a9ef4793..0b7a983c1e 100644
--- a/src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs
+++ b/src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs
@@ -160,7 +160,9 @@ namespace ICSharpCode.SharpDevelop.Project
tcs.SetResult(false);
}
} else {
- if (DotnetDetection.IsBuildTools2013Installed()) {
+ if (DotnetDetection.IsBuildTools2015Installed()) {
+ BuildWorkerManager.MSBuild140.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
+ } else if (DotnetDetection.IsBuildTools2013Installed()) {
BuildWorkerManager.MSBuild120.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
} else {
BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, cancellationToken);