diff --git a/build/common.props b/build/common.props
index d59d37e8a1..ccae1753c3 100644
--- a/build/common.props
+++ b/build/common.props
@@ -23,6 +23,8 @@
true
annotations
+
+ true
diff --git a/src/BenchmarkDotNet/BenchmarkDotNet.csproj b/src/BenchmarkDotNet/BenchmarkDotNet.csproj
index d18f3a1ea5..739ecbd85d 100644
--- a/src/BenchmarkDotNet/BenchmarkDotNet.csproj
+++ b/src/BenchmarkDotNet/BenchmarkDotNet.csproj
@@ -22,9 +22,9 @@
+
-
diff --git a/src/BenchmarkDotNet/ConsoleArguments/ConfigParser.cs b/src/BenchmarkDotNet/ConsoleArguments/ConfigParser.cs
index a49d95f1fe..b59836e395 100644
--- a/src/BenchmarkDotNet/ConsoleArguments/ConfigParser.cs
+++ b/src/BenchmarkDotNet/ConsoleArguments/ConfigParser.cs
@@ -774,10 +774,17 @@ private static string GetCoreRunToolchainDisplayName(IReadOnlyList pat
internal static bool TryParse(string runtime, out RuntimeMoniker runtimeMoniker)
{
int index = runtime.IndexOf('-');
+ if (index >= 0)
+ {
+ runtime = runtime.Substring(0, index);
+ }
- return index < 0
- ? Enum.TryParse(runtime.Replace(".", string.Empty), ignoreCase: true, out runtimeMoniker)
- : Enum.TryParse(runtime.Substring(0, index).Replace(".", string.Empty), ignoreCase: true, out runtimeMoniker);
+ // Monikers older than Net 10 don't use any version delimiter, newer monikers use _ delimiter.
+ if (Enum.TryParse(runtime.Replace(".", string.Empty), ignoreCase: true, out runtimeMoniker))
+ {
+ return true;
+ }
+ return Enum.TryParse(runtime.Replace('.', '_'), ignoreCase: true, out runtimeMoniker);
}
}
}
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.Tests/ConfigParserTests.cs b/tests/BenchmarkDotNet.Tests/ConfigParserTests.cs
index 540c622977..2a4373eef0 100644
--- a/tests/BenchmarkDotNet.Tests/ConfigParserTests.cs
+++ b/tests/BenchmarkDotNet.Tests/ConfigParserTests.cs
@@ -384,11 +384,17 @@ public void NetFrameworkMonikerParsedCorrectly(string tfm)
[Theory]
[InlineData("net50")]
+ [InlineData("net5.0")]
[InlineData("net60")]
+ [InlineData("net6.0")]
[InlineData("net70")]
+ [InlineData("net7.0")]
[InlineData("net80")]
+ [InlineData("net8.0")]
[InlineData("net90")]
+ [InlineData("net9.0")]
[InlineData("net10_0")]
+ [InlineData("net10.0")]
public void NetMonikersAreRecognizedAsNetCoreMonikers(string tfm)
{
var config = ConfigParser.Parse(new[] { "-r", tfm }, new OutputLogger(Output)).config;