|
|
|
@ -159,21 +159,36 @@ namespace ICSharpCode.ILSpy.VB
@@ -159,21 +159,36 @@ namespace ICSharpCode.ILSpy.VB
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
w.WriteElementString("AssemblyName", module.Assembly.Name.Name); |
|
|
|
|
switch (module.Runtime) { |
|
|
|
|
case TargetRuntime.Net_1_0: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v1.0"); |
|
|
|
|
break; |
|
|
|
|
case TargetRuntime.Net_1_1: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v1.1"); |
|
|
|
|
break; |
|
|
|
|
case TargetRuntime.Net_2_0: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v2.0"); |
|
|
|
|
// TODO: Detect when .NET 3.0/3.5 is required
|
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v4.0"); |
|
|
|
|
// TODO: Detect TargetFrameworkProfile
|
|
|
|
|
break; |
|
|
|
|
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) { |
|
|
|
|
case TargetRuntime.Net_1_0: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v1.0"); |
|
|
|
|
break; |
|
|
|
|
case TargetRuntime.Net_1_1: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v1.1"); |
|
|
|
|
break; |
|
|
|
|
case TargetRuntime.Net_2_0: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v2.0"); |
|
|
|
|
// TODO: Detect when .NET 3.0/3.5 is required
|
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
w.WriteElementString("TargetFrameworkVersion", "v4.0"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
w.WriteElementString("WarningLevel", "4"); |
|
|
|
|
|
|
|
|
|