Skip to content

Commit b18f236

Browse files
committed
Simplify TargetFrameworkAttribute checks.
1 parent 296c111 commit b18f236

File tree

2 files changed

+22
-40
lines changed

2 files changed

+22
-40
lines changed

src/BenchmarkDotNet/Environments/Runtimes/CoreRuntime.cs

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -252,28 +252,20 @@ private static CoreRuntime GetPlatformSpecific(CoreRuntime fallback)
252252

253253
private static CoreRuntime? GetTargetFrameworkVersion(Assembly? assembly)
254254
{
255-
if (assembly is null)
256-
{
257-
return null;
258-
}
259-
255+
//.NETCoreApp,Version=vX.Y
256+
const string FrameworkPrefix = ".NETCoreApp,Version=v";
260257
// Look for a TargetFrameworkAttribute with a supported Framework version.
261-
foreach (var attribute in assembly.GetCustomAttributes<TargetFrameworkAttribute>())
258+
string? framework = assembly?.GetCustomAttribute<TargetFrameworkAttribute>()?.FrameworkName;
259+
if (framework?.StartsWith(FrameworkPrefix) == true
260+
&& Version.TryParse(framework[FrameworkPrefix.Length..], out var version)
261+
// We don't support netcoreapp1.X
262+
&& version.Major >= 2)
262263
{
263-
//.NETCoreApp,Version=vX.Y
264-
const string FrameworkPrefix = ".NETCoreApp,Version=v";
265-
var framework = attribute.FrameworkName;
266-
if (framework?.StartsWith(FrameworkPrefix) == true
267-
&& Version.TryParse(framework[FrameworkPrefix.Length..], out var version)
268-
// We don't support netcoreapp1.X
269-
&& version.Major >= 2)
270-
{
271-
return FromVersion(version);
272-
}
264+
return FromVersion(version);
273265
}
274266

275-
// TargetFrameworkAttribute not found, or the assembly targeted a version older than we support,
276-
// or the assembly targeted a non-core framework (like netstandard2.0).
267+
// Null assembly, or TargetFrameworkAttribute not found, or the assembly targeted a version older than we support,
268+
// or the assembly targeted a non-core tfm (like netstandard2.0).
277269
return null;
278270
}
279271
}

src/BenchmarkDotNet/Helpers/FrameworkVersionHelper.cs

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,20 @@ private static readonly (int minReleaseNumber, string version)[] FrameworkVersio
2323
];
2424

2525
internal static string? GetTargetFrameworkVersion(Assembly? assembly)
26-
{
27-
if (assembly is null)
28-
{
29-
return null;
30-
}
31-
3226
// Look for a TargetFrameworkAttribute with a supported Framework version.
33-
foreach (var attribute in assembly.GetCustomAttributes<TargetFrameworkAttribute>())
27+
=> assembly?.GetCustomAttribute<TargetFrameworkAttribute>()?.FrameworkName switch
3428
{
35-
switch (attribute.FrameworkName)
36-
{
37-
case ".NETFramework,Version=v4.6.1": return "4.6.1";
38-
case ".NETFramework,Version=v4.6.2": return "4.6.2";
39-
case ".NETFramework,Version=v4.7": return "4.7";
40-
case ".NETFramework,Version=v4.7.1": return "4.7.1";
41-
case ".NETFramework,Version=v4.7.2": return "4.7.2";
42-
case ".NETFramework,Version=v4.8": return "4.8";
43-
case ".NETFramework,Version=v4.8.1": return "4.8.1";
44-
}
45-
}
46-
47-
// TargetFrameworkAttribute not found, or the assembly targeted a version older than we support.
48-
return null;
49-
}
29+
".NETFramework,Version=v4.6.1" => "4.6.1",
30+
".NETFramework,Version=v4.6.2" => "4.6.2",
31+
".NETFramework,Version=v4.7" => "4.7",
32+
".NETFramework,Version=v4.7.1" => "4.7.1",
33+
".NETFramework,Version=v4.7.2" => "4.7.2",
34+
".NETFramework,Version=v4.8" => "4.8",
35+
".NETFramework,Version=v4.8.1" => "4.8.1",
36+
// Null assembly, or TargetFrameworkAttribute not found, or the assembly targeted a version older than we support,
37+
// or the assembly targeted a non-framework tfm (like netstandard2.0).
38+
_ => null,
39+
};
5040

5141
internal static string GetFrameworkDescription()
5242
{

0 commit comments

Comments
 (0)