Browse Source

Merge pull request #454 from linquize/dotnet4-profiles

When saving project, detect different profiles based on .NET 4 and above
pull/433/merge
Daniel Grunwald 12 years ago
parent
commit
1b0318dc95
  1. 17
      ILSpy/Languages/CSharpLanguage.cs
  2. 17
      ILSpy/VB/VBLanguage.cs

17
ILSpy/Languages/CSharpLanguage.cs

@ -342,6 +342,21 @@ namespace ICSharpCode.ILSpy
} }
w.WriteElementString("AssemblyName", module.Assembly.Name.Name); w.WriteElementString("AssemblyName", module.Assembly.Name.Name);
bool useTargetFrameworkAttribute = false;
var targetFrameworkAttribute = module.Assembly.CustomAttributes.FirstOrDefault(a => a.AttributeType.FullName == "System.Runtime.Versioning.TargetFrameworkAttribute");
if (targetFrameworkAttribute != null && targetFrameworkAttribute.ConstructorArguments.Any()) {
string frameworkName = (string)targetFrameworkAttribute.ConstructorArguments[0].Value;
string[] frameworkParts = frameworkName.Split(',');
string frameworkVersion = frameworkParts.FirstOrDefault(a => a.StartsWith("Version="));
if (frameworkVersion != null) {
w.WriteElementString("TargetFrameworkVersion", frameworkVersion.Substring("Version=".Length));
useTargetFrameworkAttribute = true;
}
string frameworkProfile = frameworkParts.FirstOrDefault(a => a.StartsWith("Profile="));
if (frameworkProfile != null)
w.WriteElementString("TargetFrameworkProfile", frameworkProfile.Substring("Profile=".Length));
}
if (!useTargetFrameworkAttribute) {
switch (module.Runtime) { switch (module.Runtime) {
case TargetRuntime.Net_1_0: case TargetRuntime.Net_1_0:
w.WriteElementString("TargetFrameworkVersion", "v1.0"); w.WriteElementString("TargetFrameworkVersion", "v1.0");
@ -355,9 +370,9 @@ namespace ICSharpCode.ILSpy
break; break;
default: default:
w.WriteElementString("TargetFrameworkVersion", "v4.0"); w.WriteElementString("TargetFrameworkVersion", "v4.0");
// TODO: Detect TargetFrameworkProfile
break; break;
} }
}
w.WriteElementString("WarningLevel", "4"); w.WriteElementString("WarningLevel", "4");
w.WriteEndElement(); // </PropertyGroup> w.WriteEndElement(); // </PropertyGroup>

17
ILSpy/VB/VBLanguage.cs

@ -159,6 +159,21 @@ namespace ICSharpCode.ILSpy.VB
} }
w.WriteElementString("AssemblyName", module.Assembly.Name.Name); w.WriteElementString("AssemblyName", module.Assembly.Name.Name);
bool useTargetFrameworkAttribute = false;
var targetFrameworkAttribute = module.Assembly.CustomAttributes.FirstOrDefault(a => a.AttributeType.FullName == "System.Runtime.Versioning.TargetFrameworkAttribute");
if (targetFrameworkAttribute != null && targetFrameworkAttribute.ConstructorArguments.Any()) {
string frameworkName = (string)targetFrameworkAttribute.ConstructorArguments[0].Value;
string[] frameworkParts = frameworkName.Split(',');
string frameworkVersion = frameworkParts.FirstOrDefault(a => a.StartsWith("Version="));
if (frameworkVersion != null) {
w.WriteElementString("TargetFrameworkVersion", frameworkVersion.Substring("Version=".Length));
useTargetFrameworkAttribute = true;
}
string frameworkProfile = frameworkParts.FirstOrDefault(a => a.StartsWith("Profile="));
if (frameworkProfile != null)
w.WriteElementString("TargetFrameworkProfile", frameworkProfile.Substring("Profile=".Length));
}
if (!useTargetFrameworkAttribute) {
switch (module.Runtime) { switch (module.Runtime) {
case TargetRuntime.Net_1_0: case TargetRuntime.Net_1_0:
w.WriteElementString("TargetFrameworkVersion", "v1.0"); w.WriteElementString("TargetFrameworkVersion", "v1.0");
@ -172,9 +187,9 @@ namespace ICSharpCode.ILSpy.VB
break; break;
default: default:
w.WriteElementString("TargetFrameworkVersion", "v4.0"); w.WriteElementString("TargetFrameworkVersion", "v4.0");
// TODO: Detect TargetFrameworkProfile
break; break;
} }
}
w.WriteElementString("WarningLevel", "4"); w.WriteElementString("WarningLevel", "4");
w.WriteEndElement(); // </PropertyGroup> w.WriteEndElement(); // </PropertyGroup>

Loading…
Cancel
Save