diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs index d5228f375c..ae85b17eba 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs @@ -12,13 +12,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands { public override void Run() { - AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode; Solution solution = ProjectService.OpenSolution; - if (node == null || solution == null) { + IProject project = ProjectService.CurrentProject; + if (solution == null || project == null) return; - } - if (node.Project.IsStartable) { - solution.Preferences.StartupProject = node.Project; + if (project.IsStartable) { + solution.Preferences.StartupProject = project; } else { MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}"); } @@ -34,15 +33,14 @@ namespace ICSharpCode.SharpDevelop.Project.Commands internal static void DoRunProject(bool withDebugging = true) { - AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode; - if (node == null) { + IProject project = ProjectService.CurrentProject; + if (project == null) return; - } - if (node.Project.IsStartable) { - BuildProjectBeforeExecute build = new BuildProjectBeforeExecute(node.Project); + if (project.IsStartable) { + BuildProjectBeforeExecute build = new BuildProjectBeforeExecute(project); build.BuildComplete += delegate { if (build.LastBuildResults.ErrorCount == 0) { - node.Project.Start(withDebugging); + project.Start(withDebugging); } }; build.Run(); diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs index 2b20ab8bc2..8c7bc9a05a 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs @@ -51,8 +51,8 @@ namespace ICSharpCode.SharpDevelop.Project /// /// Returns the project in which this node belongs to. This assumes that - /// any node is child of a project. THIS DON'T WORK ON COMBINE NODES! - /// (a combine node returns null) + /// any node is child of a project. Keep in mind that Solution Folders + /// and Solution Items do not have a project assigned. /// public virtual IProject Project { get { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs index c0b879076d..97a5f52779 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs @@ -43,6 +43,8 @@ namespace ICSharpCode.SharpDevelop.Project public ProjectNode(IProject project) { + if (project == null) + throw new ArgumentNullException("project"); sortOrder = 1; this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode";