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 @@ -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 @@ -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 @@ -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);
}
}

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

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

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

@ -52,8 +52,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -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();
}
}

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

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

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

@ -627,17 +627,34 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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<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) {
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 @@ -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 @@ -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)

Loading…
Cancel
Save