diff options
author | Michael Hutchinson <m.j.hutchinson@gmail.com> | 2014-06-07 04:03:58 +0400 |
---|---|---|
committer | Michael Hutchinson <m.j.hutchinson@gmail.com> | 2014-06-17 00:39:07 +0400 |
commit | 0eb6d05b6f39ce43f082894cf82f20faa908884c (patch) | |
tree | c1ed5e5d25909636011af7eaca0667df7e9a5816 /main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs | |
parent | 066fe3fd20c2d272e7c21b9f63e4104dccb683e5 (diff) |
[MSBuild] Remote builder support for arbitrary target/item evaluation
Not exposed yet, but used for reference evaluation.
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs index fa5c98f4c5..99d40b96ef 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs @@ -259,8 +259,17 @@ namespace MonoDevelop.Projects.Formats.MSBuild SolutionEntityItem item = (SolutionEntityItem) Item; RemoteProjectBuilder builder = GetProjectBuilder (); var configs = GetConfigurations (item, configuration); - foreach (string s in builder.GetAssemblyReferences (configs)) - yield return s; + + var result = builder.Run ( + configs, null, MSBuildVerbosity.Normal, + new[] { "ResolveAssemblyReferences" }, new [] { "ReferencePath" }, null + ); + + List<MSBuildEvaluatedItem> items; + if (result.Items.TryGetValue ("ReferencePath", out items) && items != null) { + foreach (var i in items) + yield return i.ItemSpec; + } } else { CleanupProjectBuilder (); @@ -282,19 +291,19 @@ namespace MonoDevelop.Projects.Formats.MSBuild LogWriter logWriter = new LogWriter (monitor.Log); RemoteProjectBuilder builder = GetProjectBuilder (); var configs = GetConfigurations (item, configuration); - MSBuildResult[] results = builder.RunTarget (target, configs, logWriter, MSBuildProjectService.DefaultMSBuildVerbosity); + var result = builder.Run (configs, logWriter, MSBuildProjectService.DefaultMSBuildVerbosity, new[] { target }, null, null); System.Runtime.Remoting.RemotingServices.Disconnect (logWriter); var br = new BuildResult (); - foreach (MSBuildResult res in results) { + foreach (var err in result.Errors) { FilePath file = null; - if (res.File != null) - file = Path.Combine (Path.GetDirectoryName (res.ProjectFile), res.File); + if (err.File != null) + file = Path.Combine (Path.GetDirectoryName (err.ProjectFile), err.File); - if (res.IsWarning) - br.AddWarning (file, res.LineNumber, res.ColumnNumber, res.Code, res.Message); + if (err.IsWarning) + br.AddWarning (file, err.LineNumber, err.ColumnNumber, err.Code, err.Message); else - br.AddError (file, res.LineNumber, res.ColumnNumber, res.Code, res.Message); + br.AddError (file, err.LineNumber, err.ColumnNumber, err.Code, err.Message); } return br; } |