diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildTool.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildTool.cs | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildTool.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildTool.cs index 43b3b5cfd6..46479efbc9 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildTool.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildTool.cs @@ -34,6 +34,7 @@ using Mono.Addins; using MonoDevelop.Core.ProgressMonitoring; using MonoDevelop.Core; using MonoDevelop.Core.Assemblies; +using System.Threading.Tasks; namespace MonoDevelop.Projects { @@ -48,6 +49,13 @@ namespace MonoDevelop.Projects public int Run (string[] arguments) { + var t = RunAsync (arguments); + t.Wait (); + return t.Result; + } + + public async Task<int> RunAsync (string[] arguments) + { Console.WriteLine (BrandingService.BrandApplicationName ("MonoDevelop Build Tool")); foreach (string s in arguments) ReadArgument (s); @@ -93,7 +101,7 @@ namespace MonoDevelop.Projects } } - IProgressMonitor monitor = new ConsoleProjectLoadProgressMonitor (new ConsoleProgressMonitor ()); + ProgressMonitor monitor = new ConsoleProjectLoadProgressMonitor (new ConsoleProgressMonitor ()); TargetRuntime targetRuntime = null; TargetRuntime defaultRuntime = Runtime.SystemAssemblyService.DefaultRuntime; @@ -106,11 +114,16 @@ namespace MonoDevelop.Projects IBuildTarget item; if (solFile != null) - item = Services.ProjectService.ReadWorkspaceItem (monitor, solFile); + item = await Services.ProjectService.ReadWorkspaceItem (monitor, solFile) as IBuildTarget; else - item = Services.ProjectService.ReadSolutionItem (monitor, itemFile); + item = await Services.ProjectService.ReadSolutionItem (monitor, itemFile); - using (var readItem = item) { + if (item == null) { + Console.WriteLine ("The file '" + file + "' can't be built"); + return 1; + } + + using (var readItem = (WorkspaceObject)item) { if (project != null) { Solution solution = item as Solution; item = null; @@ -130,21 +143,25 @@ namespace MonoDevelop.Projects monitor = new ConsoleProgressMonitor (); BuildResult res = null; - if (item is SolutionEntityItem && ((SolutionEntityItem)item).ParentSolution == null) { + if (item is SolutionItem && ((SolutionItem)item).ParentSolution == null) { ConfigurationSelector configuration = new ItemConfigurationSelector (config); - res = item.RunTarget (monitor, command, configuration); + if (command == ProjectService.BuildTarget) + res = await item.Build (monitor, configuration); + else if (command == ProjectService.CleanTarget) + res = await item.Clean (monitor, configuration); } else { ConfigurationSelector configuration = new SolutionConfigurationSelector (config); - SolutionEntityItem solutionEntityItem = item as SolutionEntityItem; + SolutionItem solutionEntityItem = item as SolutionItem; if (solutionEntityItem != null) { if (command == ProjectService.BuildTarget) - res = solutionEntityItem.Build (monitor, configuration, true); + res = await solutionEntityItem.Build (monitor, configuration, true); else if (command == ProjectService.CleanTarget) - solutionEntityItem.Clean (monitor, configuration); - else - res = item.RunTarget (monitor, command, configuration); + await solutionEntityItem.Clean (monitor, configuration); + else if (solutionEntityItem is Project) + res = await ((Project)item).RunTarget (monitor, command, configuration); } else { - res = item.RunTarget (monitor, command, configuration); + Console.WriteLine ("The project '" + project + "' can't be built"); + return 1; } } |