Browse Source

If MSBuild 12.0 is installed, use it for all .NET 4.x projects.

pull/462/head
Daniel Grunwald 11 years ago
parent
commit
433cde2c04
  1. 11
      src/Main/Base/Project/Util/DotnetDetection.cs
  2. 8
      src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs

11
src/Main/Base/Project/Util/DotnetDetection.cs

@ -69,5 +69,16 @@ namespace ICSharpCode.SharpDevelop @@ -69,5 +69,16 @@ namespace ICSharpCode.SharpDevelop
}
return null;
}
/// <summary>
/// Gets whether the Microsoft Build Tools 2013 (MSBuild 12.0) is installed.
/// </summary>
public static bool IsBuildTools2013Installed()
{
// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\BuildTools\Servicing\12.0
using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\DevDiv\BuildTools\Servicing\12.0\MSBuild")) {
return key != null && key.GetValue("Install") as int? >= 1;
}
}
}
}

8
src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs

@ -159,10 +159,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -159,10 +159,12 @@ namespace ICSharpCode.SharpDevelop.Project
loggerChain.HandleError(new BuildError(job.ProjectFileName, ".NET 3.5 SP1 is required to build this project."));
tcs.SetResult(false);
}
} else if (projectMinimumSolutionVersion <= SolutionFormatVersion.VS2010) {
BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
} else {
BuildWorkerManager.MSBuild120.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
if (DotnetDetection.IsBuildTools2013Installed()) {
BuildWorkerManager.MSBuild120.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
} else {
BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
}
}
return tcs.Task;
}

Loading…
Cancel
Save