Browse Source

Fixed SD2-925: Building a project when the solution has different configurations

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1564 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
2ec072088f
  1. 23
      src/Main/Base/Project/Src/Commands/BuildCommands.cs
  2. 5
      src/Main/Base/Project/Src/Gui/IWorkbench.cs
  3. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
  4. 9
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
  5. 29
      src/Main/Base/Project/Src/Project/Solution/Solution.cs
  6. 21
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

23
src/Main/Base/Project/Src/Commands/BuildCommands.cs

@ -66,28 +66,35 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public event EventHandler BuildComplete; public event EventHandler BuildComplete;
} }
public class Build : AbstractBuildMenuCommand public sealed class Build : AbstractBuildMenuCommand
{ {
public override void StartBuild() public override void StartBuild()
{ {
ProjectService.RaiseEventStartBuild();
ProjectService.OpenSolution.Build(CallbackMethod); ProjectService.OpenSolution.Build(CallbackMethod);
} }
public override void AfterBuild() public override void AfterBuild()
{ {
ProjectService.OnEndBuild(); ProjectService.RaiseEventEndBuild();
} }
} }
public class Rebuild : Build public sealed class Rebuild : AbstractBuildMenuCommand
{ {
public override void StartBuild() public override void StartBuild()
{ {
ProjectService.RaiseEventStartBuild();
ProjectService.OpenSolution.Rebuild(CallbackMethod); ProjectService.OpenSolution.Rebuild(CallbackMethod);
} }
public override void AfterBuild()
{
ProjectService.RaiseEventEndBuild();
}
} }
public class Clean : AbstractBuildMenuCommand public sealed class Clean : AbstractBuildMenuCommand
{ {
public override void StartBuild() public override void StartBuild()
{ {
@ -95,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
} }
} }
public class Publish : AbstractBuildMenuCommand public sealed class Publish : AbstractBuildMenuCommand
{ {
public override void StartBuild() public override void StartBuild()
{ {
@ -130,19 +137,21 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public override void StartBuild() public override void StartBuild()
{ {
ProjectService.RaiseEventStartBuild();
this.ProjectToBuild.Build(CallbackMethod); this.ProjectToBuild.Build(CallbackMethod);
} }
public override void AfterBuild() public override void AfterBuild()
{ {
ProjectService.OnEndBuild(); ProjectService.RaiseEventEndBuild();
} }
} }
public class RebuildProject : BuildProject public sealed class RebuildProject : BuildProject
{ {
public override void StartBuild() public override void StartBuild()
{ {
ProjectService.RaiseEventStartBuild();
this.ProjectToBuild.Rebuild(CallbackMethod); this.ProjectToBuild.Rebuild(CallbackMethod);
} }
} }

5
src/Main/Base/Project/Src/Gui/IWorkbench.cs

@ -90,6 +90,11 @@ namespace ICSharpCode.SharpDevelop.Gui
/// <summary> /// <summary>
/// Is called, when a workbench view was opened /// Is called, when a workbench view was opened
/// </summary> /// </summary>
/// <example>
/// WorkbenchSingleton.WorkbenchCreated += delegate {
/// WorkbenchSingleton.Workbench.ViewOpened += ...;
/// };
/// </example>
event ViewContentEventHandler ViewOpened; event ViewContentEventHandler ViewOpened;
/// <summary> /// <summary>

3
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs

@ -52,8 +52,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
newProject.Location = FileUtility.GetRelativePath(solutionFolderNode.Solution.Directory, fileName); newProject.Location = FileUtility.GetRelativePath(solutionFolderNode.Solution.Directory, fileName);
ProjectService.AddProject(solutionFolderNode, newProject); ProjectService.AddProject(solutionFolderNode, newProject);
NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible(); NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible();
solutionFolderNode.Solution.ApplySolutionConfigurationToProjects(); solutionFolderNode.Solution.ApplySolutionConfigurationAndPlatformToProjects();
solutionFolderNode.Solution.ApplySolutionPlatformToProjects();
} }
} }

9
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -52,12 +52,6 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
} }
static WorkbenchSingleton()
{
PropertyService.PropertyChanged += new PropertyChangedEventHandler(TrackPropertyChanges);
ResourceService.LanguageChanged += delegate { workbench.RedrawAllComponents(); };
}
/// <remarks> /// <remarks>
/// This method handles the redraw all event for specific changed IDE properties /// This method handles the redraw all event for specific changed IDE properties
/// </remarks> /// </remarks>
@ -82,6 +76,9 @@ namespace ICSharpCode.SharpDevelop.Gui
workbench = new DefaultWorkbench(); workbench = new DefaultWorkbench();
MessageService.MainForm = workbench; MessageService.MainForm = workbench;
PropertyService.PropertyChanged += new PropertyChangedEventHandler(TrackPropertyChanges);
ResourceService.LanguageChanged += delegate { workbench.RedrawAllComponents(); };
caller = new STAThreadCaller(workbench); caller = new STAThreadCaller(workbench);
workbench.InitializeWorkspace(); workbench.InitializeWorkspace();

29
src/Main/Base/Project/Src/Project/Solution/Solution.cs

@ -627,17 +627,34 @@ namespace ICSharpCode.SharpDevelop.Project
public void ApplySolutionConfigurationToProjects() public void ApplySolutionConfigurationToProjects()
{ {
// TODO: Use assignments from project configuration section ApplySolutionConfigurationAndPlatformToProjects();
foreach (IProject p in Projects) {
p.Configuration = preferences.ActiveConfiguration;
}
} }
public void ApplySolutionPlatformToProjects() public void ApplySolutionPlatformToProjects()
{ {
// TODO: Use assignments from project configuration section ApplySolutionConfigurationAndPlatformToProjects();
}
public void ApplySolutionConfigurationAndPlatformToProjects()
{
string conf = preferences.ActiveConfiguration;
string plat = preferences.ActivePlatform;
ProjectSection prjSec = GetProjectConfigurationsSection();
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (SolutionItem item in prjSec.Items) {
dict[item.Name] = item.Location;
}
string searchKeyPostFix = "." + conf + "|" + plat + ".Build.0";
foreach (IProject p in Projects) { foreach (IProject p in Projects) {
p.Platform = preferences.ActivePlatform; string searchKey = p.IdGuid + searchKeyPostFix;
string targetConfPlat;
if (dict.TryGetValue(searchKey, out targetConfPlat)) {
p.Configuration = AbstractProject.GetConfigurationNameFromKey(targetConfPlat);
p.Platform = AbstractProject.GetPlatformNameFromKey(targetConfPlat);
} else {
p.Configuration = conf;
p.Platform = plat;
}
} }
} }

21
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -263,8 +263,7 @@ namespace ICSharpCode.SharpDevelop.Project
static void ApplyConfigurationAndReadPreferences() static void ApplyConfigurationAndReadPreferences()
{ {
openSolution.ApplySolutionConfigurationToProjects(); openSolution.ApplySolutionConfigurationAndPlatformToProjects();
openSolution.ApplySolutionPlatformToProjects();
foreach (IProject project in openSolution.Projects) { foreach (IProject project in openSolution.Projects) {
string file = GetPreferenceFileName(project.FileName); string file = GetPreferenceFileName(project.FileName);
if (FileUtility.IsValidFileName(file) && File.Exists(file)) { if (FileUtility.IsValidFileName(file) && File.Exists(file)) {
@ -467,23 +466,25 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
static void OnStartBuild(EventArgs e) public static void RaiseEventStartBuild()
{ {
if (StartBuild != null) { if (StartBuild != null) {
StartBuild(null, e); StartBuild(null, EventArgs.Empty);
} }
} }
public static void OnEndBuild() public static void RaiseEventEndBuild()
{ {
OnEndBuild(new EventArgs()); if (EndBuild != null) {
EndBuild(null, EventArgs.Empty);
}
} }
static void OnEndBuild(EventArgs e) // TODO: Remove me in Serralongue
[Obsolete("Use RaiseEventEndBuild instead")]
public static void OnEndBuild()
{ {
if (EndBuild != null) { RaiseEventEndBuild();
EndBuild(null, e);
}
} }
public static void RemoveSolutionFolder(string guid) public static void RemoveSolutionFolder(string guid)

Loading…
Cancel
Save