From bb37c77bf48ab6d4c3aab0265629c4115b040b61 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 21 May 2009 23:46:45 +0000 Subject: [PATCH] Allow converting projects to MSBuild 4.0 git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/dotnet4@4100 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../ProjectOptions/AbstractBuildOptions.cs | 14 +++++++------- .../Templates/Project/ProjectTemplate.cs | 5 +++-- .../Project/Src/Project/CompilableProject.cs | 18 +++++++++--------- .../Project/Src/Project/MSBuildBasedProject.cs | 8 +++++--- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs index c62eb1890b..19a70af91b 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs @@ -243,13 +243,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels ComboBox targetFrameworkComboBox = (ComboBox)ControlDictionary["targetFrameworkComboBox"]; if (convertProjectToMSBuild35Button != null) { - if (project.MinimumSolutionVersion == Solution.SolutionVersionVS2005) { - // VS05 project + if (project.MinimumSolutionVersion <= Solution.SolutionVersionVS2008) { + // VS05/VS08 project targetFrameworkComboBox.Enabled = false; convertProjectToMSBuild35Button.Click += OnConvertProjectToMSBuild35ButtonClick; return; } else { - // VS08 project + // VS2010 project targetFrameworkComboBox.Enabled = true; convertProjectToMSBuild35Button.Visible = false; } @@ -279,13 +279,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels foreach (IProject p in ProjectService.OpenSolution.Projects) { MSBuildBasedProject msbp = p as MSBuildBasedProject; if (msbp != null) - msbp.ConvertToMSBuild35(dlg.ChangeTargetFramework); + msbp.ConvertToMSBuild40(dlg.ChangeTargetFramework); } } else { - project.ConvertToMSBuild35(dlg.ChangeTargetFramework); + project.ConvertToMSBuild40(dlg.ChangeTargetFramework); } - if (project.MinimumSolutionVersion == Solution.SolutionVersionVS2005) - throw new InvalidOperationException("Project did not convert to MSBuild 3.5"); + if (project.MinimumSolutionVersion < Solution.SolutionVersionVS2010) + throw new InvalidOperationException("Project did not convert to MSBuild 4.0"); ProjectService.SaveSolution(); InitTargetFramework(); } diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs index 2d9a5b7f2b..42b18c3383 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs @@ -27,16 +27,17 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates public readonly static TargetFramework Net20 = new TargetFramework("v2.0", ".NET Framework 2.0"); public readonly static TargetFramework Net30 = new TargetFramework("v3.0", ".NET Framework 3.0") { BasedOn = Net20 }; public readonly static TargetFramework Net35 = new TargetFramework("v3.5", ".NET Framework 3.5") { BasedOn = Net30 }; + public readonly static TargetFramework Net40 = new TargetFramework("v4.0", ".NET Framework 4.0") { BasedOn = Net35 }; public readonly static TargetFramework CF = new TargetFramework("CF", null); public readonly static TargetFramework CF20 = new TargetFramework("CF 2.0", "Compact Framework 2.0") { BasedOn = CF }; public readonly static TargetFramework CF35 = new TargetFramework("CF 3.5", "Compact Framework 3.5") { BasedOn = CF20 }; public readonly static TargetFramework[] TargetFrameworks = { - Net35, Net30, Net20, + Net40, Net35, Net30, Net20, CF, CF35, CF20 }; - public const string DefaultTargetFrameworkName = "v3.5"; + public const string DefaultTargetFrameworkName = "v4.0"; public static TargetFramework GetByName(string name) { diff --git a/src/Main/Base/Project/Src/Project/CompilableProject.cs b/src/Main/Base/Project/Src/Project/CompilableProject.cs index 1c235bc47e..734c9e2003 100644 --- a/src/Main/Base/Project/Src/Project/CompilableProject.cs +++ b/src/Main/Base/Project/Src/Project/CompilableProject.cs @@ -411,10 +411,10 @@ namespace ICSharpCode.SharpDevelop.Project } } - public override void ConvertToMSBuild35(bool changeTargetFrameworkToNet35) + public override void ConvertToMSBuild40(bool changeTargetFrameworkToNet40) { lock (SyncRoot) { - base.ConvertToMSBuild35(changeTargetFrameworkToNet35); + base.ConvertToMSBuild40(changeTargetFrameworkToNet40); var winFxImport = MSBuildProject.Imports.Cast() .Where(import => !import.IsImported) @@ -422,12 +422,12 @@ namespace ICSharpCode.SharpDevelop.Project if (winFxImport != null) { MSBuildProject.Imports.RemoveImport(winFxImport); } - if (changeTargetFrameworkToNet35) { - bool isDotNet35 = TargetFrameworkVersion == "v3.5"; - SetProperty(null, null, "TargetFrameworkVersion", "v3.5", PropertyStorageLocations.Base, true); + if (changeTargetFrameworkToNet40) { + bool isDotNet40 = TargetFrameworkVersion == "v4.0"; + SetProperty(null, null, "TargetFrameworkVersion", "v4.0", PropertyStorageLocations.Base, true); - if (!isDotNet35) { - AddDotnet35References(); + if (!isDotNet40) { + AddDotnet40References(); } } else { foreach (string config in ConfigurationNames) { @@ -455,7 +455,7 @@ namespace ICSharpCode.SharpDevelop.Project AddOrRemoveExtensions(); } - protected internal virtual void AddDotnet35References() + protected internal virtual void AddDotnet40References() { ReferenceProjectItem rpi = new ReferenceProjectItem(this, "System.Core"); rpi.SetMetadata("RequiredTargetFramework", "3.5"); @@ -486,7 +486,7 @@ namespace ICSharpCode.SharpDevelop.Project { CompilableProject project = (CompilableProject)Owner; if (project.TargetFrameworkVersion == "v3.5") { - project.AddDotnet35References(); + project.AddDotnet40References(); } } } diff --git a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs index 4f6c7e8dc5..64595d8c4e 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs @@ -82,17 +82,19 @@ namespace ICSharpCode.SharpDevelop.Project || project.DefaultToolsVersion == "2.0") { return Solution.SolutionVersionVS2005; - } else { + } else if (project.DefaultToolsVersion == "3.0" || project.DefaultToolsVersion == "3.5") { return Solution.SolutionVersionVS2008; + } else { + return Solution.SolutionVersionVS2010; } } } } - public virtual void ConvertToMSBuild35(bool changeTargetFrameworkToNet35) + public virtual void ConvertToMSBuild40(bool changeTargetFrameworkToNet40) { lock (SyncRoot) { - project.DefaultToolsVersion = "3.5"; + project.DefaultToolsVersion = "4.0"; } }