diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm index 222f879854..5c0b04436c 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm @@ -1,7 +1,7 @@ - + @@ -68,16 +68,31 @@ - + + + + + + + + + + + + + + + + - + - - + + @@ -157,7 +172,6 @@ - @@ -213,7 +227,7 @@ - + @@ -255,7 +269,7 @@ - + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs index 49790c8dd4..495bbf8441 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs @@ -29,6 +29,8 @@ namespace CSharpBinding.OptionPanels InitOutputPath(); InitXmlDoc(); + InitTargetFramework(CSharpProject.DefaultTargetsFile, + @"$(SharpDevelopBinPath)\SharpDevelop.Build.CSharp.targets"); 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 190dc30f20..255af68bb0 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs @@ -50,10 +50,12 @@ namespace CSharpBinding Create(info); } + public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.CSharp.Targets"; + protected override void Create(ProjectCreateInformation information) { base.Create(information); - imports.Add(@"$(MSBuildBinPath)\Microsoft.CSharp.Targets"); + imports.Add(DefaultTargetsFile); SetProperty("Debug", null, "CheckForOverflowUnderflow", "True", PropertyStorageLocations.ConfigurationSpecific); SetProperty("Release", null, "CheckForOverflowUnderflow", "False", PropertyStorageLocations.ConfigurationSpecific); } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs index f5ce99caaa..d06a1dfde2 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs @@ -59,11 +59,13 @@ namespace VBNetBinding IdGuid = BaseConfiguration["ProjectGuid"]; } + public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets"; + public VBNetProject(ProjectCreateInformation info) { InitVB(); Create(info); - imports.Add(@"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets"); + imports.Add(DefaultTargetsFile); } public override ParseProjectContent CreateProjectContent() diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj index e99d7a9766..1f78783456 100644 --- a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj @@ -35,5 +35,10 @@ + + + Always + + - \ No newline at end of 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 new file mode 100644 index 0000000000..e19571fefa --- /dev/null +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets @@ -0,0 +1,61 @@ + + + + + $(SystemRoot)\Microsoft.NET\Framework\v1.0.3705 + true + + + $(SystemRoot)\Microsoft.NET\Framework\v1.1.4322 + true + + + + v1.0 + + + false + + + + + + + + + + {CandidateAssemblyFiles}; + $(ReferencePath); + {HintPathFromItem}; + {TargetFrameworkDirectory}; + {AssemblyFolders}; + $(OutputPath); + {GAC} + + + $(CscToolPath) + + + + + false + + + + + + + + + + + + + + + + + + + diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Common.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Common.targets index ecbd120c94..82d81441b7 100644 --- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Common.targets +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Common.targets @@ -1,4 +1,5 @@ + 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 ebbd1666b9..87a6caf359 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 @@ -169,5 +169,40 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels } }; } + + protected void InitTargetFramework(string defaultTargets, string extendedTargets) + { + const string TargetFrameworkProperty = "TargetFrameworkVersion"; + debugInfoBinding = helper.BindStringEnum("targetFrameworkComboBox", TargetFrameworkProperty, + "", + new StringPair("", "Default (.NET 2.0)"), + new StringPair("v1.0", ".NET 1.0"), + new StringPair("v1.1", ".NET 1.1"), + new StringPair("v2.0", ".NET 2.0")); + debugInfoBinding.CreateLocationButton("targetFrameworkLabel"); + helper.Saved += delegate { + // Test if SharpDevelop-Build extensions are needed + MSBuildProject project = helper.Project; + bool needExtensions = false; + PropertyStorageLocations location; + foreach (string configuration in project.GetConfigurationNames()) { + foreach (string platform in project.GetPlatformNames()) { + string value = project.GetProperty(configuration, platform, TargetFrameworkProperty, "", out location); + if (value.Length > 0) { + needExtensions = true; + } + } + } + for (int i = 0; i < project.Imports.Count; i++) { + if (needExtensions) { + if (defaultTargets.Equals(project.Imports[i], StringComparison.InvariantCultureIgnoreCase)) + project.Imports[i] = extendedTargets; + } else { + if (extendedTargets.Equals(project.Imports[i], StringComparison.InvariantCultureIgnoreCase)) + project.Imports[i] = defaultTargets; + } + } + }; + } } }