From 16bc1e5b150df47ca15b590469e2e08360ba6032 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 27 Oct 2009 18:13:58 +0000 Subject: [PATCH] Add reference to System.Xaml when upgrading WPF projects. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5186 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Project/CompilableProject.cs | 37 +++++++++++++++++++ .../Project/Src/Project/Solution/Solution.cs | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/Main/Base/Project/Src/Project/CompilableProject.cs b/src/Main/Base/Project/Src/Project/CompilableProject.cs index c51bb03997..df838f216f 100644 --- a/src/Main/Base/Project/Src/Project/CompilableProject.cs +++ b/src/Main/Base/Project/Src/Project/CompilableProject.cs @@ -421,6 +421,26 @@ namespace ICSharpCode.SharpDevelop.Project } } + protected virtual void RemoveDotnet35References() + { + // undo "AddDotnet35References" + RemoveReference("System.Core"); + RemoveReference("System.Data.DataSetExtensions"); + RemoveReference("System.Xml.Linq"); + } + + protected internal virtual void AddDotnet40References() + { + if (GetItemsOfType(ItemType.Reference).Any(r => r.Include == "WindowsBase")) { + AddReferenceIfNotExists("System.Xaml", "4.0"); + } + } + + protected virtual void RemoveDotnet40References() + { + RemoveReference("System.Xaml"); + } + void AddReferenceIfNotExists(string name, string requiredTargetFramework) { if (!(GetItemsOfType(ItemType.Reference).Any(r => r.Include == name))) { @@ -431,6 +451,13 @@ namespace ICSharpCode.SharpDevelop.Project } } + void RemoveReference(string name) + { + ProjectItem reference = GetItemsOfType(ItemType.Reference).FirstOrDefault(r => r.Include == name); + if (reference != null) + ProjectService.RemoveProjectItem(this, reference); + } + protected internal virtual void AddOrRemoveExtensions() { } @@ -489,6 +516,13 @@ namespace ICSharpCode.SharpDevelop.Project SetProperty(null, null, "TargetFrameworkVersion", newFramework.Name, PropertyStorageLocations.Base, true); if (oldFramework != null && !oldFramework.IsBasedOn(TargetFramework.Net35) && newFramework.IsBasedOn(TargetFramework.Net35)) AddDotnet35References(); + else if (oldFramework != null && oldFramework.IsBasedOn(TargetFramework.Net35) && !newFramework.IsBasedOn(TargetFramework.Net35)) + RemoveDotnet35References(); + + if (oldFramework != null && !oldFramework.IsBasedOn(TargetFramework.Net40) && newFramework.IsBasedOn(TargetFramework.Net40)) + AddDotnet40References(); + else if (oldFramework != null && oldFramework.IsBasedOn(TargetFramework.Net40) && !newFramework.IsBasedOn(TargetFramework.Net40)) + RemoveDotnet40References(); } /* var winFxImport = MSBuildProject.Imports.Cast() @@ -539,6 +573,9 @@ namespace ICSharpCode.SharpDevelop.Project if (fx != null && fx.IsBasedOn(TargetFramework.Net35)) { project.AddDotnet35References(); } + if (fx != null && fx.IsBasedOn(TargetFramework.Net40)) { + project.AddDotnet40References(); + } } } } diff --git a/src/Main/Base/Project/Src/Project/Solution/Solution.cs b/src/Main/Base/Project/Src/Project/Solution/Solution.cs index a46fbb69ee..b766354c1a 100644 --- a/src/Main/Base/Project/Src/Project/Solution/Solution.cs +++ b/src/Main/Base/Project/Src/Project/Solution/Solution.cs @@ -396,7 +396,7 @@ namespace ICSharpCode.SharpDevelop.Project } else if (versionNumber == SolutionVersionVS2008) { sw.WriteLine("# Visual Studio 2008"); } else if (versionNumber == SolutionVersionVS2010) { - sw.WriteLine("# Visual Studio 10"); + sw.WriteLine("# Visual Studio 2010"); } sw.WriteLine("# SharpDevelop " + RevisionClass.FullVersion); sw.Write(projectSection.ToString());