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();