Browse Source

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

pull/462/head
Daniel Grunwald 12 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
} }
return null; 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
loggerChain.HandleError(new BuildError(job.ProjectFileName, ".NET 3.5 SP1 is required to build this project.")); loggerChain.HandleError(new BuildError(job.ProjectFileName, ".NET 3.5 SP1 is required to build this project."));
tcs.SetResult(false); tcs.SetResult(false);
} }
} else if (projectMinimumSolutionVersion <= SolutionFormatVersion.VS2010) {
BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, cancellationToken);
} else { } 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; return tcs.Task;
} }

Loading…
Cancel
Save