diff --git a/src/Main/Base/Project/Src/Commands/BuildCommands.cs b/src/Main/Base/Project/Src/Commands/BuildCommands.cs
index 9c191e1f4e..5fab9555d8 100644
--- a/src/Main/Base/Project/Src/Commands/BuildCommands.cs
+++ b/src/Main/Base/Project/Src/Commands/BuildCommands.cs
@@ -66,28 +66,35 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public event EventHandler BuildComplete;
}
- public class Build : AbstractBuildMenuCommand
+ public sealed class Build : AbstractBuildMenuCommand
{
public override void StartBuild()
{
+ ProjectService.RaiseEventStartBuild();
ProjectService.OpenSolution.Build(CallbackMethod);
}
public override void AfterBuild()
{
- ProjectService.OnEndBuild();
+ ProjectService.RaiseEventEndBuild();
}
}
- public class Rebuild : Build
+ public sealed class Rebuild : AbstractBuildMenuCommand
{
public override void StartBuild()
{
+ ProjectService.RaiseEventStartBuild();
ProjectService.OpenSolution.Rebuild(CallbackMethod);
}
+
+ public override void AfterBuild()
+ {
+ ProjectService.RaiseEventEndBuild();
+ }
}
- public class Clean : AbstractBuildMenuCommand
+ public sealed class Clean : AbstractBuildMenuCommand
{
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()
{
@@ -130,19 +137,21 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public override void StartBuild()
{
+ ProjectService.RaiseEventStartBuild();
this.ProjectToBuild.Build(CallbackMethod);
}
public override void AfterBuild()
{
- ProjectService.OnEndBuild();
+ ProjectService.RaiseEventEndBuild();
}
}
- public class RebuildProject : BuildProject
+ public sealed class RebuildProject : BuildProject
{
public override void StartBuild()
{
+ ProjectService.RaiseEventStartBuild();
this.ProjectToBuild.Rebuild(CallbackMethod);
}
}
diff --git a/src/Main/Base/Project/Src/Gui/IWorkbench.cs b/src/Main/Base/Project/Src/Gui/IWorkbench.cs
index d7df9739b9..04e2b64196 100644
--- a/src/Main/Base/Project/Src/Gui/IWorkbench.cs
+++ b/src/Main/Base/Project/Src/Gui/IWorkbench.cs
@@ -90,6 +90,11 @@ namespace ICSharpCode.SharpDevelop.Gui
///
/// Is called, when a workbench view was opened
///
+ ///
+ /// WorkbenchSingleton.WorkbenchCreated += delegate {
+ /// WorkbenchSingleton.Workbench.ViewOpened += ...;
+ /// };
+ ///
event ViewContentEventHandler ViewOpened;
///
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
index 4427778001..2616f7fc55 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
+++ b/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);
ProjectService.AddProject(solutionFolderNode, newProject);
NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible();
- solutionFolderNode.Solution.ApplySolutionConfigurationToProjects();
- solutionFolderNode.Solution.ApplySolutionPlatformToProjects();
+ solutionFolderNode.Solution.ApplySolutionConfigurationAndPlatformToProjects();
}
}
diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
index 3c41bd5701..3a2b3a29b5 100644
--- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
+++ b/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(); };
- }
-
///
/// This method handles the redraw all event for specific changed IDE properties
///
@@ -82,6 +76,9 @@ namespace ICSharpCode.SharpDevelop.Gui
workbench = new DefaultWorkbench();
MessageService.MainForm = workbench;
+ PropertyService.PropertyChanged += new PropertyChangedEventHandler(TrackPropertyChanges);
+ ResourceService.LanguageChanged += delegate { workbench.RedrawAllComponents(); };
+
caller = new STAThreadCaller(workbench);
workbench.InitializeWorkspace();
diff --git a/src/Main/Base/Project/Src/Project/Solution/Solution.cs b/src/Main/Base/Project/Src/Project/Solution/Solution.cs
index c5543f45f2..4e69122ba6 100644
--- a/src/Main/Base/Project/Src/Project/Solution/Solution.cs
+++ b/src/Main/Base/Project/Src/Project/Solution/Solution.cs
@@ -627,17 +627,34 @@ namespace ICSharpCode.SharpDevelop.Project
public void ApplySolutionConfigurationToProjects()
{
- // TODO: Use assignments from project configuration section
- foreach (IProject p in Projects) {
- p.Configuration = preferences.ActiveConfiguration;
- }
+ ApplySolutionConfigurationAndPlatformToProjects();
}
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 dict = new Dictionary();
+ foreach (SolutionItem item in prjSec.Items) {
+ dict[item.Name] = item.Location;
+ }
+ string searchKeyPostFix = "." + conf + "|" + plat + ".Build.0";
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;
+ }
}
}
diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
index d4ba32d4d0..558339aacb 100644
--- a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
+++ b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
@@ -263,8 +263,7 @@ namespace ICSharpCode.SharpDevelop.Project
static void ApplyConfigurationAndReadPreferences()
{
- openSolution.ApplySolutionConfigurationToProjects();
- openSolution.ApplySolutionPlatformToProjects();
+ openSolution.ApplySolutionConfigurationAndPlatformToProjects();
foreach (IProject project in openSolution.Projects) {
string file = GetPreferenceFileName(project.FileName);
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) {
- 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) {
- EndBuild(null, e);
- }
+ RaiseEventEndBuild();
}
public static void RemoveSolutionFolder(string guid)