Browse Source

Allow converting projects to MSBuild 4.0

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/dotnet4@4100 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
bb37c77bf4
  1. 14
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
  2. 5
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs
  3. 18
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  4. 8
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

14
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs

@ -243,13 +243,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -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 @@ -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();
}

5
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

@ -27,16 +27,17 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -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)
{

18
src/Main/Base/Project/Src/Project/CompilableProject.cs

@ -411,10 +411,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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<Microsoft.Build.BuildEngine.Import>()
.Where(import => !import.IsImported)
@ -422,12 +422,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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 @@ -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 @@ -486,7 +486,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
CompilableProject project = (CompilableProject)Owner;
if (project.TargetFrameworkVersion == "v3.5") {
project.AddDotnet35References();
project.AddDotnet40References();
}
}
}

8
src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

@ -82,17 +82,19 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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";
}
}

Loading…
Cancel
Save