Browse Source

fix http://community.sharpdevelop.net/forums/p/15856/41473.aspx - Null Reference at Set as StartUp Project

pull/26/head
Siegfried Pammer 13 years ago
parent
commit
5f3fa30fda
  1. 20
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs
  2. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs
  3. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs

20
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs

@ -12,13 +12,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{ {
public override void Run() public override void Run()
{ {
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
Solution solution = ProjectService.OpenSolution; Solution solution = ProjectService.OpenSolution;
if (node == null || solution == null) { IProject project = ProjectService.CurrentProject;
if (solution == null || project == null)
return; return;
} if (project.IsStartable) {
if (node.Project.IsStartable) { solution.Preferences.StartupProject = project;
solution.Preferences.StartupProject = node.Project;
} else { } else {
MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}"); MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}");
} }
@ -34,15 +33,14 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
internal static void DoRunProject(bool withDebugging = true) internal static void DoRunProject(bool withDebugging = true)
{ {
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode; IProject project = ProjectService.CurrentProject;
if (node == null) { if (project == null)
return; return;
} if (project.IsStartable) {
if (node.Project.IsStartable) { BuildProjectBeforeExecute build = new BuildProjectBeforeExecute(project);
BuildProjectBeforeExecute build = new BuildProjectBeforeExecute(node.Project);
build.BuildComplete += delegate { build.BuildComplete += delegate {
if (build.LastBuildResults.ErrorCount == 0) { if (build.LastBuildResults.ErrorCount == 0) {
node.Project.Start(withDebugging); project.Start(withDebugging);
} }
}; };
build.Run(); build.Run();

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs

@ -51,8 +51,8 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary> /// <summary>
/// Returns the project in which this node belongs to. This assumes that /// 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! /// any node is child of a project. Keep in mind that Solution Folders
/// (a combine node returns null) /// and Solution Items do not have a project assigned.
/// </summary> /// </summary>
public virtual IProject Project { public virtual IProject Project {
get { get {

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs

@ -43,6 +43,8 @@ namespace ICSharpCode.SharpDevelop.Project
public ProjectNode(IProject project) public ProjectNode(IProject project)
{ {
if (project == null)
throw new ArgumentNullException("project");
sortOrder = 1; sortOrder = 1;
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode"; this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode";

Loading…
Cancel
Save