diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm index f09fd502d3..033d933e9d 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm @@ -6,238 +6,246 @@ - - + - - + + + - - + - + + + - - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + - - + + + + + + + + + + + - - + - + + + - - - + + - - + - - + + + - - + + - - + + - + - + + - - - + + - + - + + - - - + + - - + - - + + + - - - + + + - + - + + - - - + + - + - + + - - - - + + + - - + + - + - + + - - - + + - + - + + - - - + + @@ -245,55 +253,55 @@ - - + - + + + - - - + + - - + - - + + + - - + - + + + - - - + + - - + - - + + + @@ -301,90 +309,90 @@ - - + - - + + + - + - + + - - - + + - + - + + - - - + + - - + - - + + + - + - - + + - + - - + + - + - - + + - - + + - + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs index 4fb4f55ef0..2ee31ef4c0 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs @@ -24,7 +24,7 @@ namespace CSharpBinding.OptionPanels InitOutputPath(); InitXmlDoc(); InitTargetFramework(CSharpProject.DefaultTargetsFile, - @"$(SharpDevelopBinPath)\SharpDevelop.Build.CSharp.targets"); + CSharpProject.ExtendedTargetsFile); ConfigurationGuiBinding b; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs index 70e7862117..7fa118037e 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs @@ -59,6 +59,7 @@ namespace CSharpBinding } public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.CSharp.Targets"; + public const string ExtendedTargetsFile = @"$(SharpDevelopBinPath)\SharpDevelop.Build.CSharp.targets"; protected override void Create(ProjectCreateInformation information) { @@ -95,5 +96,11 @@ namespace CSharpBinding base.StartBuild(options, feedbackSink); } } + + public override void ConvertToMSBuild35(bool changeTargetFrameworkToNet35) + { + base.ConvertToMSBuild35(changeTargetFrameworkToNet35); + ConvertToMSBuild35(changeTargetFrameworkToNet35, DefaultTargetsFile, ExtendedTargetsFile); + } } } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Resources/BuildOptions.xfrm b/src/AddIns/BackendBindings/VBNetBinding/Project/Resources/BuildOptions.xfrm index 0b76278dfb..68b5bf314d 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Resources/BuildOptions.xfrm +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Resources/BuildOptions.xfrm @@ -6,360 +6,368 @@ - + + + - - - - + + - - + + - - + + - - - + + + - - + + - - - + + + + - - - + + - - - + + + - + + + - - + + + + + + + + - + + + - - - - - + + + - - + + + - - - + + - - + + - - + + + - - - - + + + - - + + - - + + + - - - + - + + + - - - + + - - + - - + + + - - + - + + + - - - + + - - + - - + + + - - + + - - - + + + - - + + - - + + + - - - + + - - + + - - - + + + + - - - + + - + + + - - - + + + - - - - + + - - - + + + - - - + + + - - - + + + - + + + - - - - + + - - + + + - - - + + - - + + + - - + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs index 60bf278d98..53a0eaff78 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs @@ -51,7 +51,7 @@ namespace VBNetBinding.OptionPanels InitOutputPath(); InitXmlDoc(); InitTargetFramework(VBNetProject.DefaultTargetsFile, - @"$(SharpDevelopBinPath)\SharpDevelop.Build.VisualBasic.targets"); + VBNetProject.ExtendedTargetsFile); InitDebugInfo(); InitAdvanced(); diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs index 325c0af48d..06669e1a0c 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs @@ -57,6 +57,7 @@ namespace VBNetBinding } public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets"; + public const string ExtendedTargetsFile = @"$(SharpDevelopBinPath)\SharpDevelop.Build.VisualBasic.targets"; public VBNetProject(ProjectCreateInformation info) : base(info.Solution) @@ -117,5 +118,11 @@ namespace VBNetBinding base.StartBuild(options, feedbackSink); } } + + public override void ConvertToMSBuild35(bool changeTargetFrameworkToNet35) + { + base.ConvertToMSBuild35(changeTargetFrameworkToNet35); + ConvertToMSBuild35(changeTargetFrameworkToNet35, DefaultTargetsFile, ExtendedTargetsFile); + } } } diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs index 8616d8067e..0db0958f09 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs @@ -55,6 +55,7 @@ namespace ResourceEditor public ResourceEditWrapper(OpenedFile file) { + this.TabPageText = "Resource editor"; base.UserControl = resourceEditor; resourceEditor.ResourceList.Changed += new EventHandler(SetDirty); this.Files.Add(file); diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets index 0d1c071b0b..c1c64152c9 100644 --- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets @@ -4,89 +4,44 @@ + v2.0 $(TargetFrameworkVersion) unknown - - v1.0 - - - $(SystemRoot)\Microsoft.NET\Framework\v1.0.3705 - $(SystemRoot)\Microsoft.NET\Framework\v1.1.4322 - false - - - v1 - - - - v2.0 + v2 - - v1.0 - true - CF - v2.0 - true CF Mono - + + + - - + + + + - - - - {CandidateAssemblyFiles}; - $(ReferencePath); - {HintPathFromItem}; - {TargetFrameworkDirectory}; - {AssemblyFolders}; - $(OutputPath); - {GAC} - - - $(CscToolPath) - + + + + - - - false - - + + - - - - - - - - - - - - - - - - @@ -107,8 +62,6 @@ - - diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets index b46a0ec2a3..9f47f054c1 100644 --- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets @@ -4,155 +4,42 @@ + v2.0 $(TargetFrameworkVersion) + unknown - - $(SystemRoot)\Microsoft.NET\Framework\v1.0.3705 - true - true + + v2 - - $(SystemRoot)\Microsoft.NET\Framework\v1.1.4322 - true - true - - - v1.0 - - - false - - - - + v2.0 - true + CF - - - v1.0 - true + + Mono - - v2.0 - true - - - - - - - - {CandidateAssemblyFiles}; - $(ReferencePath); - {HintPathFromItem}; - {TargetFrameworkDirectory}; - {AssemblyFolders}; - $(OutputPath); - {GAC} - - - $(VbcToolPath) - + + + + + - - - false - - + + + + - - - - - - - - - - - - - - + + + - - - - - + + + @@ -161,7 +48,7 @@ - + PocketPC WinCE @@ -174,8 +61,6 @@ - - diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index ee85f3b5db..d6fd6089b5 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -71,6 +71,10 @@ OpenWithDialog.cs + + + ConvertToMSBuild35Dialog.cs + AddNewConfigurationDialog.cs @@ -691,6 +695,9 @@ + + ConvertToMSBuild35Dialog.cs + 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 f919ccc38a..f9ecc470f7 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 @@ -226,17 +226,34 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels } } + MethodInvoker reinitializeTargetFramework; + protected void InitTargetFramework(string defaultTargets, string extendedTargets) { + Button convertProjectToMSBuild35Button = (Button)ControlDictionary["convertProjectToMSBuild35Button"]; + ComboBox targetFrameworkComboBox = (ComboBox)ControlDictionary["targetFrameworkComboBox"]; + + if (convertProjectToMSBuild35Button != null) { + if (project.MinimumSolutionVersion == 9) { + // VS05 project + targetFrameworkComboBox.Enabled = false; + reinitializeTargetFramework = delegate { InitTargetFramework(defaultTargets, extendedTargets); }; + convertProjectToMSBuild35Button.Click += OnConvertProjectToMSBuild35ButtonClick; + return; + } else { + // VS08 project + targetFrameworkComboBox.Enabled = true; + convertProjectToMSBuild35Button.Visible = false; + } + } + const string TargetFrameworkProperty = "TargetFrameworkVersion"; ConfigurationGuiBinding targetFrameworkBinding; targetFrameworkBinding = helper.BindStringEnum("targetFrameworkComboBox", TargetFrameworkProperty, - "", - new StringPair("", "C# 2.0 / .NET 2.0"), - new StringPair("v2.0", "C# 3.0 / .NET 2.0"), - new StringPair("v3.0", "C# 3.0 / .NET 3.0"), - new StringPair("v3.5", "C# 3.0 / .NET 3.5"), - new StringPair("CF 1.0", "Compact Framework 1.0"), + "v2.0", + new StringPair("v2.0", ".NET 2.0"), + new StringPair("v3.0", ".NET 3.0"), + new StringPair("v3.5", ".NET 3.5"), new StringPair("CF 2.0", "Compact Framework 2.0"), new StringPair("Mono v1.1", "Mono 1.1"), new StringPair("Mono v2.0", "Mono 2.0")); @@ -245,25 +262,15 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels MSBuildBasedProject project = helper.Project; // Test if SharpDevelop-Build extensions are needed bool needExtensions = false; - // Test if MSBuild 3.5 is required - bool needMSBuild35 = false; foreach (MSBuild.BuildProperty p in project.GetAllProperties(TargetFrameworkProperty)) { if (p.IsImported == false) { if (p.Value.StartsWith("CF") || p.Value.StartsWith("Mono")) { needExtensions = true; - } else if (p.Value.StartsWith("v")) { - needMSBuild35 = true; } } } - string newToolsVersion = needMSBuild35 ? "3.5" : "2.0"; - if (project.MSBuildProject.DefaultToolsVersion != newToolsVersion) { - project.MSBuildProject.DefaultToolsVersion = newToolsVersion; - project.ParentSolution.Save(); - } - foreach (MSBuild.Import import in project.MSBuildProject.Imports) { if (needExtensions) { if (defaultTargets.Equals(import.ProjectPath, StringComparison.InvariantCultureIgnoreCase)) { @@ -281,5 +288,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels } }; } + + void OnConvertProjectToMSBuild35ButtonClick(object sender, EventArgs e) + { + using (ConvertToMSBuild35Dialog dlg = new ConvertToMSBuild35Dialog(project.Language + " newversion")) { + if (dlg.ShowDialog() == DialogResult.OK) { + if (dlg.ConvertAllProjects) { + foreach (IProject p in ProjectService.OpenSolution.Projects) { + MSBuildBasedProject msbp = p as MSBuildBasedProject; + if (msbp != null) + msbp.ConvertToMSBuild35(dlg.ChangeTargetFramework); + } + } else { + project.ConvertToMSBuild35(dlg.ChangeTargetFramework); + } + ProjectService.SaveSolution(); + reinitializeTargetFramework(); + } + } + } } } diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.Designer.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.Designer.cs new file mode 100644 index 0000000000..838e961000 --- /dev/null +++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.Designer.cs @@ -0,0 +1,139 @@ +// +// +// +// +// $Revision$ +// + +namespace ICSharpCode.SharpDevelop.Gui.OptionPanels +{ + partial class ConvertToMSBuild35Dialog + { + /// + /// Designer variable used to keep track of non-visual components. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Disposes resources used by the form. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing) { + if (components != null) { + components.Dispose(); + } + } + base.Dispose(disposing); + } + + /// + /// This method is required for Windows Forms designer support. + /// Do not change the method contents inside the source code editor. The Forms designer might + /// not be able to load this method if it was changed manually. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.convertAllProjectsCheckBox = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.changeTargetFrameworkCheckBox = new System.Windows.Forms.CheckBox(); + this.okButton = new System.Windows.Forms.Button(); + this.cancelButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(270, 72); + this.label1.TabIndex = 0; + this.label1.Text = "This will upgrade your project to use MSBuild 3.5 and the ${LANG} compiler.\r\nAfte" + + "r the conversion, the project will no longer open in SharpDevelop 2.x."; + // + // convertAllProjectsCheckBox + // + this.convertAllProjectsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.convertAllProjectsCheckBox.Location = new System.Drawing.Point(12, 84); + this.convertAllProjectsCheckBox.Name = "convertAllProjectsCheckBox"; + this.convertAllProjectsCheckBox.Size = new System.Drawing.Size(270, 24); + this.convertAllProjectsCheckBox.TabIndex = 1; + this.convertAllProjectsCheckBox.Text = "Convert &all projects in the solution"; + this.convertAllProjectsCheckBox.UseVisualStyleBackColor = true; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.Location = new System.Drawing.Point(12, 124); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(270, 48); + this.label2.TabIndex = 2; + this.label2.Text = "Converting the project does not change the target framework. If you want to use t" + + "he .NET 3.5 features, select the following option:"; + // + // changeTargetFrameworkCheckBox + // + this.changeTargetFrameworkCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.changeTargetFrameworkCheckBox.Location = new System.Drawing.Point(12, 175); + this.changeTargetFrameworkCheckBox.Name = "changeTargetFrameworkCheckBox"; + this.changeTargetFrameworkCheckBox.Size = new System.Drawing.Size(270, 24); + this.changeTargetFrameworkCheckBox.TabIndex = 3; + this.changeTargetFrameworkCheckBox.Text = "Change target framework to .NET 3.5"; + this.changeTargetFrameworkCheckBox.UseVisualStyleBackColor = true; + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.okButton.Location = new System.Drawing.Point(126, 215); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 23); + this.okButton.TabIndex = 4; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + // + // cancelButton + // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(207, 215); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(75, 23); + this.cancelButton.TabIndex = 5; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + // + // ConvertToMSBuild35Dialog + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelButton; + this.ClientSize = new System.Drawing.Size(294, 250); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.Controls.Add(this.changeTargetFrameworkCheckBox); + this.Controls.Add(this.label2); + this.Controls.Add(this.convertAllProjectsCheckBox); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ConvertToMSBuild35Dialog"; + this.Text = "Convert Project"; + this.ResumeLayout(false); + } + private System.Windows.Forms.CheckBox changeTargetFrameworkCheckBox; + private System.Windows.Forms.CheckBox convertAllProjectsCheckBox; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + } +} diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.cs new file mode 100644 index 0000000000..ab6228ec78 --- /dev/null +++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.cs @@ -0,0 +1,45 @@ +// +// +// +// +// $Revision$ +// + +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace ICSharpCode.SharpDevelop.Gui.OptionPanels +{ + /// + /// Displays information about the conversion to MSBuild 3.5 and allows to choose whether + /// all projects should be converted/whether the target framework should be changed. + /// + public partial class ConvertToMSBuild35Dialog : Form + { + public ConvertToMSBuild35Dialog(string newLanguageVersion) + { + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + } + + public bool ForceConvertAllProjects { + get { return !convertAllProjectsCheckBox.Enabled; } + set { + convertAllProjectsCheckBox.Enabled = !value; + if (value) + convertAllProjectsCheckBox.Checked = true; + } + } + + public bool ChangeTargetFramework { + get { return changeTargetFrameworkCheckBox.Checked; } + } + + public bool ConvertAllProjects { + get { return convertAllProjectsCheckBox.Checked; } + } + } +} diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.resx b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.resx new file mode 100644 index 0000000000..7080a7d118 --- /dev/null +++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ConvertToMSBuild35Dialog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Project/CompilableProject.cs b/src/Main/Base/Project/Src/Project/CompilableProject.cs index 8df79fe148..a457b72625 100644 --- a/src/Main/Base/Project/Src/Project/CompilableProject.cs +++ b/src/Main/Base/Project/Src/Project/CompilableProject.cs @@ -6,6 +6,7 @@ // using System; +using System.Linq; using System.IO; using System.ComponentModel; using ICSharpCode.Core; @@ -342,5 +343,55 @@ namespace ICSharpCode.SharpDevelop.Project return base.GetDefaultItemType(fileName); } } + + protected void ConvertToMSBuild35(bool changeTargetFrameworkToNet35, string DefaultTargetsFile, string ExtendedTargetsFile) + { + lock (SyncRoot) { + var winFxImport = MSBuildProject.Imports.Cast() + .Where(import => !import.IsImported) + .FirstOrDefault(import => string.Equals(import.ProjectPath, "$(MSBuildBinPath)\\Microsoft.WinFX.targets", StringComparison.OrdinalIgnoreCase)); + if (winFxImport != null) { + MSBuildProject.Imports.RemoveImport(winFxImport); + } + bool needsExtensions = false; + if (changeTargetFrameworkToNet35) { + SetProperty(null, null, "TargetFrameworkVersion", "v3.5", PropertyStorageLocations.Base, true); + ReferenceProjectItem rpi = new ReferenceProjectItem(this, "System.Core"); + rpi.SetMetadata("RequiredTargetFramework", "3.5"); + ProjectService.AddProjectItem(this, rpi); + } else { + foreach (string config in ConfigurationNames) { + foreach (string platform in PlatformNames) { + PropertyStorageLocations loc; + string targetFrameworkVersion = GetProperty(config, platform, "TargetFrameworkVersion", out loc); + if (string.IsNullOrEmpty(targetFrameworkVersion)) + targetFrameworkVersion = "v2.0"; + switch (targetFrameworkVersion) { + case "CF 1.0": + targetFrameworkVersion = "CF 2.0"; + break; + case "v1.0": + case "v1.1": + targetFrameworkVersion = "v2.0"; + break; + } + if (targetFrameworkVersion == "v2.0" && winFxImport != null) + targetFrameworkVersion = "v3.0"; + if (targetFrameworkVersion.StartsWith("CF") || targetFrameworkVersion.StartsWith("Mono")) + needsExtensions = true; + SetProperty(config, platform, "TargetFrameworkVersion", targetFrameworkVersion, loc, true); + } + } + } + if (!needsExtensions) { + foreach (Microsoft.Build.BuildEngine.Import import in MSBuildProject.Imports) { + if (ExtendedTargetsFile.Equals(import.ProjectPath, StringComparison.InvariantCultureIgnoreCase)) { + MSBuildInternals.SetImportProjectPath(this, import, DefaultTargetsFile); + break; + } + } + } + } + } } } diff --git a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs index 7382ed70cf..36c2d121b3 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs @@ -76,6 +76,13 @@ namespace ICSharpCode.SharpDevelop.Project } } + public virtual void ConvertToMSBuild35(bool changeTargetFrameworkToNet35) + { + lock (SyncRoot) { + project.DefaultToolsVersion = "3.5"; + } + } + public override void ResolveAssemblyReferences() { MSBuildInternals.ResolveAssemblyReferences(this, null); @@ -140,6 +147,8 @@ namespace ICSharpCode.SharpDevelop.Project Name = information.ProjectName; FileName = information.OutputProjectFileName; + project.DefaultToolsVersion = "3.5"; + base.IdGuid = "{" + Guid.NewGuid().ToString().ToUpperInvariant() + "}"; MSBuild.BuildPropertyGroup group = project.AddNewPropertyGroup(false); group.AddNewProperty(ProjectGuidPropertyName, IdGuid, true); diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs index 475e401195..ddf5452e63 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs @@ -364,6 +364,10 @@ namespace ICSharpCode.SharpDevelop.Project } if (isShortFileName && !File.Exists(file)) { file = ""; + } else if (FileUtility.IsBaseDirectory(FileUtility.NETFrameworkInstallRoot, file) + || FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, file)) + { + file = ""; } } FlushCurrentError();