public override IEnumerable <CompilerVersion> GetAvailableCompilerVersions() { List <CompilerVersion> versions = new List <CompilerVersion>(); if (DotnetDetection.IsDotnet35SP1Installed()) { versions.Add(msbuild20); versions.Add(msbuild35); } versions.Add(msbuild40); return(versions); }
internal Task <bool> RunBuildAsync(CancellationToken cancellationToken) { Dictionary <string, string> globalProperties = new Dictionary <string, string>(); globalProperties.AddRange(SD.MSBuildEngine.GlobalBuildProperties); foreach (KeyValuePair <string, string> pair in options.Properties) { LoggingService.Debug("Setting property " + pair.Key + " to '" + pair.Value + "'"); globalProperties[pair.Key] = pair.Value; } globalProperties["Configuration"] = options.Configuration; if (options.Platform == "Any CPU") { globalProperties["Platform"] = "AnyCPU"; } else { globalProperties["Platform"] = options.Platform; } InterestingTasks.AddRange(parentBuildEngine.CompileTaskNames); loggers.Add(new SharpDevelopLogger(this)); if (options.BuildOutputVerbosity == BuildOutputVerbosity.Diagnostic) { this.ReportMessageEvents = true; this.ReportAllTaskFinishedEvents = true; this.ReportAllTaskStartedEvents = true; this.ReportTargetFinishedEvents = true; this.ReportTargetStartedEvents = true; this.ReportUnknownEvents = true; loggers.Add(new SDConsoleLogger(feedbackSink, LoggerVerbosity.Diagnostic)); globalProperties["MSBuildTargetsVerbose"] = "true"; } //loggers.Add(new BuildLogFileLogger(project.FileName + ".log", LoggerVerbosity.Diagnostic)); foreach (IMSBuildAdditionalLogger loggerProvider in parentBuildEngine.AdditionalMSBuildLoggers) { loggers.Add(loggerProvider.CreateLogger(this)); } loggerChain = new EndOfChain(this); foreach (IMSBuildLoggerFilter loggerFilter in parentBuildEngine.MSBuildLoggerFilters) { loggerChain = loggerFilter.CreateFilter(this, loggerChain) ?? loggerChain; } WriteAdditionalTargetsToTempFile(globalProperties); BuildJob job = new BuildJob(); job.ProjectFileName = projectFileName; job.Target = options.Target.TargetName; // First remove the flags for the controllable events. job.EventMask = EventTypes.All & ~ControllableEvents; // Add back active controllable events. if (ReportMessageEvents) { job.EventMask |= EventTypes.Message; } if (ReportTargetStartedEvents) { job.EventMask |= EventTypes.TargetStarted; } if (ReportTargetFinishedEvents) { job.EventMask |= EventTypes.TargetFinished; } if (ReportAllTaskStartedEvents) { job.EventMask |= EventTypes.TaskStarted; } if (ReportAllTaskFinishedEvents) { job.EventMask |= EventTypes.TaskFinished; } if (ReportUnknownEvents) { job.EventMask |= EventTypes.Unknown; } if (!(ReportAllTaskStartedEvents && ReportAllTaskFinishedEvents)) { // just some TaskStarted & TaskFinished events should be reported job.InterestingTaskNames.AddRange(InterestingTasks); } foreach (var pair in globalProperties) { job.Properties.Add(pair.Key, pair.Value); } foreach (ILogger logger in loggers) { logger.Initialize(eventSource); } tcs = new TaskCompletionSource <bool>(); if (projectMinimumSolutionVersion <= SolutionFormatVersion.VS2008) { if (DotnetDetection.IsDotnet35SP1Installed()) { BuildWorkerManager.MSBuild35.RunBuildJob(job, loggerChain, OnDone, cancellationToken); } else { loggerChain.HandleError(new BuildError(job.ProjectFileName, ".NET 3.5 SP1 is required to build this project.")); tcs.SetResult(false); } } else { BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, cancellationToken); } return(tcs.Task); }
public override bool IsAvailable() { // .NET 2.0/3.0/3.5 can only be used if .NET 3.5 SP1 is installed return(DotnetDetection.IsDotnet35SP1Installed()); }