diff options
author | Rodrigo Moya <rodrigo.moya@xamarin.com> | 2019-11-26 14:51:51 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-26 14:51:51 +0300 |
commit | 15eb26f4bdd0d9aaf43b4d0011cd8f91101f5213 (patch) | |
tree | 1d4f91c4b530af9ff40ce8638f274bbadc56d778 | |
parent | 7ff74522f1fcdacba1817c448d6ec2e3fb7a4d44 (diff) | |
parent | 4df15d51af859a89c05e8f2f5056f33274682bce (diff) |
Merge pull request #9371 from mono/pr-aspnetcore-execution-target-group
[AspNet*] Add a group for ASP.NET Core Browser execution targets
4 files changed, 26 insertions, 8 deletions
diff --git a/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs b/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs index ad8049679f..d0932c706b 100644 --- a/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs +++ b/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs @@ -708,14 +708,14 @@ namespace MonoDevelop.AspNet.Projects protected override IEnumerable<ExecutionTarget> OnGetExecutionTargets (ConfigurationSelector configuration) { - var apps = new List<ExecutionTarget> (); + var result = new ExecutionTargetGroup (GettextCatalog.GetString ("Browser"), "MonoDevelop.AspNet.BrowserExecutionTargets"); foreach (var browser in MonoDevelop.Ide.IdeServices.DesktopService.GetApplications ("https://localhost", DesktopApplicationRole.Viewer)) { if (browser.IsDefault) - apps.Insert (0, new BrowserExecutionTarget (browser.Id,browser.DisplayName,browser)); + result.Insert (0, new BrowserExecutionTarget (browser.Id,browser.DisplayName,browser)); else - apps.Add (new BrowserExecutionTarget (browser.Id,browser.DisplayName,browser)); + result.Add (new BrowserExecutionTarget (browser.Id,browser.DisplayName,browser)); } - return apps; + yield return result; } } } diff --git a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/AspNetCoreProjectTests.cs b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/AspNetCoreProjectTests.cs index c9e5df4ec2..2871419fbf 100644 --- a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/AspNetCoreProjectTests.cs +++ b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/AspNetCoreProjectTests.cs @@ -35,6 +35,7 @@ using MonoDevelop.Projects; using UnitTests; using MonoDevelop.Ide.Gui; using MonoDevelop.Ide.Projects.FileNesting; +using MonoDevelop.Core.Execution; namespace MonoDevelop.AspNetCore.Tests { @@ -194,9 +195,10 @@ namespace MonoDevelop.AspNetCore.Tests using (var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName)) { var project = (DotNetProject)sol.Items[0]; - var targets = project.GetExecutionTargets (ConfigurationSelector.Default) - .Cast<AspNetCoreTargetFrameworkExecutionTarget> () + var groups = project.GetExecutionTargets (ConfigurationSelector.Default) + .Cast<ExecutionTargetGroup> () .ToList (); + var targets = groups.SelectMany (x => x.ToArray ()); if (Directory.Exists ("/Applications/Safari.app")) { var matchNetCoreApp21 = targets.FirstOrDefault (x => x.Name.Contains ("Safari • netcoreapp2.1")); diff --git a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore/AspNetCoreProjectExtension.cs b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore/AspNetCoreProjectExtension.cs index c17e990a32..e50b937d18 100644 --- a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore/AspNetCoreProjectExtension.cs +++ b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore/AspNetCoreProjectExtension.cs @@ -178,7 +178,7 @@ namespace MonoDevelop.AspNetCore protected override IEnumerable<ExecutionTarget> OnGetExecutionTargets (OperationContext ctx, ConfigurationSelector configuration, SolutionItemRunConfiguration runConfig) { - var result = new List<ExecutionTarget> (); + var result = new ExecutionTargetGroup (GettextCatalog.GetString ("Browser"), "MonoDevelop.AspNetCore.BrowserExecutionTargets"); foreach (var browser in IdeServices.DesktopService.GetApplications ("https://localhost", Ide.Desktop.DesktopApplicationRole.Viewer)) { if (browser.IsDefault) { if (Project.HasMultipleTargetFrameworks) { @@ -195,7 +195,9 @@ namespace MonoDevelop.AspNetCore } } - return result.Count > 0 ? result : base.OnGetExecutionTargets (configuration); + return result.Count > 0 + ? new ExecutionTarget [] { result } + : base.OnGetExecutionTargets (ctx, configuration, runConfig); } IEnumerable<ExecutionTarget> GetMultipleTargetFrameworkExecutionTargets (DesktopApplication browser) diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs index 0cc2485439..f726b4043d 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs @@ -220,6 +220,20 @@ namespace MonoDevelop.Core.Execution } #endregion + + #region Helper methods + + public void AddRange (IEnumerable<ExecutionTarget> collection) + { + targets.AddRange (collection); + } + + public void InsertRange (int index, IEnumerable<ExecutionTarget> collection) + { + targets.InsertRange (index, collection); + } + + #endregion } public class MultiProjectExecutionTarget : ExecutionTarget |