Browse Source

Fix #466: Add support for targeting .NET 4.5.2

pull/470/head
Daniel Grunwald 11 years ago
parent
commit
14464bd8b4
  1. 6
      doc/Dependencies.html
  2. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  3. 160
      src/Main/Base/Project/Project/TargetFrameworks/TargetFramework.cs
  4. 6
      src/Main/Base/Project/Util/DotnetDetection.cs
  5. 1
      src/Main/Base/Project/Util/Versions.cs
  6. 3
      src/Main/SharpDevelop/Parser/AssemblyParserService.cs

6
doc/Dependencies.html

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<ul>
<li>
<a href="http://www.microsoft.com/en-us/download/details.aspx?id=40772">Microsoft .NET Framework 4.5.1 Developer Pack</a> for .NET 4.5 code completion documentation
<a href="http://www.microsoft.com/en-us/download/details.aspx?id=42637">Microsoft .NET Framework 4.5.2 Developer Pack</a> for .NET 4.5 code completion documentation
</li>
<li>
<a href="http://www.microsoft.com/downloads/details.aspx?familyid=6B6C21D2-2006-4AFA-9702-529FA782D63B&amp;displaylang=en">Microsoft Windows SDK for Windows 7 and .NET Framework 4</a> (strongly recommended!)
@ -47,6 +47,10 @@ @@ -47,6 +47,10 @@
<th>Target platform</th>
<th>Reference Assemblies</th>
<tr>
<tr>
<td>.NET Framework 4.5.2</td>
<td><a href="http://www.microsoft.com/en-us/download/details.aspx?id=42637">Microsoft .NET Framework 4.5.2 Developer Pack</a></td>
</tr>
<tr>
<td>.NET Framework 4.5.1</td>
<td><a href="http://www.microsoft.com/en-us/download/details.aspx?id=40772">Microsoft .NET Framework 4.5.1 Developer Pack</a></td>

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -2451,5 +2451,6 @@ @@ -2451,5 +2451,6 @@
<Static class="ICSharpCode.SharpDevelop.Project.TargetFramework" member="Net40Client" />
<Static class="ICSharpCode.SharpDevelop.Project.TargetFramework" member="Net45" />
<Static class="ICSharpCode.SharpDevelop.Project.TargetFramework" member="Net451" />
<Static class="ICSharpCode.SharpDevelop.Project.TargetFramework" member="Net452" />
</Path>
</AddIn>

160
src/Main/Base/Project/Project/TargetFrameworks/TargetFramework.cs

@ -37,6 +37,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -37,6 +37,7 @@ namespace ICSharpCode.SharpDevelop.Project
public static readonly TargetFramework Net40Client = new DotNet4xClient(Versions.V4_0, RedistLists.Net40Client, DotnetDetection.IsDotnet40Installed);
public static readonly TargetFramework Net45 = new DotNet4x(Versions.V4_5, RedistLists.Net45, DotnetDetection.IsDotnet45Installed);
public static readonly TargetFramework Net451 = new DotNet4x(Versions.V4_5_1, RedistLists.Net45, DotnetDetection.IsDotnet451Installed);
public static readonly TargetFramework Net452 = new DotNet4x(Versions.V4_5_2, RedistLists.Net45, DotnetDetection.IsDotnet452Installed);
/// <summary>
/// Retrieves a target framework by a 'name'.
@ -230,163 +231,4 @@ namespace ICSharpCode.SharpDevelop.Project @@ -230,163 +231,4 @@ namespace ICSharpCode.SharpDevelop.Project
return DisplayName;
}
}
/*
public class TargetFramework
{
public readonly static TargetFramework Net20 = new TargetFramework("v2.0", ".NET Framework 2.0") {
SupportedRuntimeVersion = "v2.0.50727",
MinimumMSBuildVersion = new Version(2, 0),
// .NET 2.0/3.0/3.5 can only be used if .NET 3.5 SP1 is installed
IsAvailable = DotnetDetection.IsDotnet35SP1Installed
};
public readonly static TargetFramework Net30 = new TargetFramework("v3.0", ".NET Framework 3.0") {
SupportedRuntimeVersion = "v2.0.50727",
BasedOn = Net20,
MinimumMSBuildVersion = new Version(3, 5)
};
public readonly static TargetFramework Net35 = new TargetFramework("v3.5", ".NET Framework 3.5") {
SupportedRuntimeVersion = "v2.0.50727",
BasedOn = Net30,
MinimumMSBuildVersion = new Version(3, 5)
};
public readonly static TargetFramework Net35Client = new ClientProfileTargetFramework(Net35) {
RequiresAppConfigEntry = true
};
public readonly static TargetFramework Net40 = new TargetFramework("v4.0", ".NET Framework 4.0") {
BasedOn = Net35,
MinimumMSBuildVersion = new Version(4, 0),
SupportedSku = ".NETFramework,Version=v4.0",
RequiresAppConfigEntry = true,
IsAvailable = DotnetDetection.IsDotnet40Installed
};
public readonly static TargetFramework Net40Client = new ClientProfileTargetFramework(Net40) {
BasedOn = Net35Client
};
public readonly static TargetFramework Net45 = new TargetFramework("v4.5", ".NET Framework 4.5") {
BasedOn = Net40,
MinimumMSBuildVersion = new Version(4, 0),
SupportedRuntimeVersion = "v4.0",
SupportedSku = ".NETFramework,Version=v4.5",
RequiresAppConfigEntry = true,
IsAvailable = DotnetDetection.IsDotnet45Installed
};
public readonly static TargetFramework Net451 = new TargetFramework("v4.5.1", ".NET Framework 4.5.1") {
BasedOn = Net45,
MinimumMSBuildVersion = new Version(4, 0),
SupportedRuntimeVersion = "v4.0",
SupportedSku = ".NETFramework,Version=v4.5.1",
RequiresAppConfigEntry = true,
IsAvailable = DotnetDetection.IsDotnet451Installed
};
public readonly static TargetFramework[] TargetFrameworks = {
Net451, Net45, Net40, Net40Client, Net35, Net35Client, Net30, Net20
};
public readonly static TargetFramework DefaultTargetFramework = Net40Client;
public static TargetFramework GetByName(string name)
{
foreach (TargetFramework tf in TargetFrameworks) {
if (tf.Name == name)
return tf;
}
throw new ArgumentException("No target framework '" + name + "' exists");
}
string name, displayName;
public TargetFramework(string name, string displayName)
{
this.name = name;
this.displayName = displayName;
this.SupportedRuntimeVersion = name;
this.IsAvailable = delegate {
if (this.BasedOn != null)
return this.BasedOn.IsAvailable();
else
return true;
};
}
public string Name {
get { return name; }
}
public string DisplayName {
get { return displayName; }
}
/// <summary>
/// Function that determines if this target framework is available.
/// </summary>
public Func<bool> IsAvailable { get; set; }
/// <summary>
/// Supported runtime version string for app.config
/// </summary>
public string SupportedRuntimeVersion { get; set; }
/// <summary>
/// Supported SKU string for app.config.
/// </summary>
public string SupportedSku { get; set; }
/// <summary>
/// Specifies whether this target framework requires an explicit app.config entry.
/// </summary>
public bool RequiresAppConfigEntry { get; set; }
/// <summary>
/// Gets the minimum MSBuild version required to build projects with this target framework.
/// </summary>
public Version MinimumMSBuildVersion { get; set; }
/// <summary>
/// Gets the previous release of this target framework.
/// </summary>
public TargetFramework BasedOn { get; set; }
public virtual bool IsCompatibleWith(CompilerVersion compilerVersion)
{
return MinimumMSBuildVersion <= compilerVersion.MSBuildVersion;
}
public bool IsBasedOn(TargetFramework potentialBase)
{
TargetFramework tmp = this;
while (tmp != null) {
if (tmp == potentialBase)
return true;
tmp = tmp.BasedOn;
}
return false;
}
public override string ToString()
{
return DisplayName;
}
}
public class ClientProfileTargetFramework : TargetFramework
{
public TargetFramework FullFramework { get; private set; }
public ClientProfileTargetFramework(TargetFramework fullFramework)
: base(fullFramework.Name + "Client", fullFramework.DisplayName + " Client Profile")
{
this.FullFramework = fullFramework;
this.SupportedRuntimeVersion = fullFramework.SupportedRuntimeVersion;
this.MinimumMSBuildVersion = fullFramework.MinimumMSBuildVersion;
this.IsAvailable = fullFramework.IsAvailable;
if (fullFramework.SupportedSku != null)
this.SupportedSku = fullFramework.SupportedSku + ",Profile=Client";
else
this.SupportedSku = "Client";
}
}*/
}

6
src/Main/Base/Project/Util/DotnetDetection.cs

@ -61,6 +61,12 @@ namespace ICSharpCode.SharpDevelop @@ -61,6 +61,12 @@ namespace ICSharpCode.SharpDevelop
return GetDotnet4Release() >= 378675;
}
public static bool IsDotnet452Installed()
{
// 379893 is .NET 4.5.2 on my Win7 machine
return GetDotnet4Release() >= 379893;
}
static int? GetDotnet4Release()
{
using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full")) {

1
src/Main/Base/Project/Util/Versions.cs

@ -31,5 +31,6 @@ namespace ICSharpCode.SharpDevelop @@ -31,5 +31,6 @@ namespace ICSharpCode.SharpDevelop
public static readonly Version V4_0 = new Version(4, 0);
public static readonly Version V4_5 = new Version(4, 5);
public static readonly Version V4_5_1 = new Version(4, 5, 1);
public static readonly Version V4_5_2 = new Version(4, 5, 2);
}
}

3
src/Main/SharpDevelop/Parser/AssemblyParserService.cs

@ -235,7 +235,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -235,7 +235,8 @@ namespace ICSharpCode.SharpDevelop.Parser
break;
case TargetRuntime.Net_4_0:
default:
xmlFileName = LookupLocalizedXmlDoc(Path.Combine(referenceAssembliesPath, @".NETFramework\v4.5.1", name))
xmlFileName = LookupLocalizedXmlDoc(Path.Combine(referenceAssembliesPath, @".NETFramework\v4.5.2", name))
?? LookupLocalizedXmlDoc(Path.Combine(referenceAssembliesPath, @".NETFramework\v4.5.1", name))
?? LookupLocalizedXmlDoc(Path.Combine(referenceAssembliesPath, @".NETFramework\v4.5", name))
?? LookupLocalizedXmlDoc(Path.Combine(referenceAssembliesPath, @".NETFramework\v4.0", name))
?? LookupLocalizedXmlDoc(Path.Combine(frameworkPath, "v4.0.30319", name));

Loading…
Cancel
Save