Skip to content

Commit 438e0fa

Browse files
committed
PR feedback.
1 parent e928d51 commit 438e0fa

File tree

15 files changed

+57
-45
lines changed

15 files changed

+57
-45
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ If you want to compare benchmarks with each other,
135135
mark one of the benchmarks as the [baseline](https://benchmarkdotnet.org/articles/features/baselines.html)
136136
via `[Benchmark(Baseline = true)]`: BenchmarkDotNet will compare it with all of the other benchmarks.
137137
If you want to compare performance in different environments, use [jobs](https://benchmarkdotnet.org/articles/configs/jobs.html).
138-
For example, you can run all the benchmarks on .NET Core 3.0 and Mono via
139-
`[SimpleJob(RuntimeMoniker.NetCoreApp30)]` and `[SimpleJob(RuntimeMoniker.Mono)]`.
138+
For example, you can run all the benchmarks on .NET 8.0 and Mono via
139+
`[SimpleJob(RuntimeMoniker.Net80)]` and `[SimpleJob(RuntimeMoniker.Mono)]`.
140140

141141
If you don't like attributes, you can call most of the APIs via the fluent style and write code like this:
142142

build/common.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
2424

2525
<Nullable>annotations</Nullable>
26-
<!-- Suppress "System.Collections.Immutable 8.0.0 doesn't support netcoreapp3.1" warning -->
26+
<!-- Suppress warning for nuget package used in old (unsupported) tfm. -->
2727
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
2828
</PropertyGroup>
2929

docs/articles/configs/toolchains.md

+12-12
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@ When you run your benchmarks without specifying the toolchain in an explicit way
1818
If you want to test multiple frameworks, your project file **MUST target all of them** and you **MUST install the corresponding SDKs**:
1919

2020
```xml
21-
<TargetFrameworks>netcoreapp3.0;netcoreapp2.1;net48</TargetFrameworks>
21+
<TargetFrameworks>netcoreapp3.1;net8.0;net48</TargetFrameworks>
2222
```
2323

2424
If you run your benchmarks without specifying any custom settings, BenchmarkDotNet is going to run the benchmarks **using the same framework as the host process**:
2525

2626
```cmd
27-
dotnet run -c Release -f netcoreapp2.1 # is going to run the benchmarks using .NET Core 2.1
28-
dotnet run -c Release -f netcoreapp3.0 # is going to run the benchmarks using .NET Core 3.0
27+
dotnet run -c Release -f netcoreapp3.1 # is going to run the benchmarks using .NET Core 3.1
28+
dotnet run -c Release -f net8.0 # is going to run the benchmarks using .NET 8.0
2929
dotnet run -c Release -f net48 # is going to run the benchmarks using .NET 4.8
3030
mono $pathToExe # is going to run the benchmarks using Mono from your PATH
3131
```
3232

3333
To run the benchmarks for multiple runtimes with a single command, you need to specify the target framework moniker names via `--runtimes|-r` console argument:
3434

3535
```cmd
36-
dotnet run -c Release -f netcoreapp2.1 --runtimes netcoreapp2.1 netcoreapp3.0 # is going to run the benchmarks using .NET Core 2.1 and .NET Core 3.0
37-
dotnet run -c Release -f netcoreapp2.1 --runtimes netcoreapp2.1 net48 # is going to run the benchmarks using .NET Core 2.1 and .NET 4.8
36+
dotnet run -c Release -f net8.0 --runtimes net8.0 netcoreapp3.1 # is going to run the benchmarks using .NET 8.0 and .NET Core 3.1
37+
dotnet run -c Release -f net8.0 --runtimes net8.0 net48 # is going to run the benchmarks using .NET 8.0 and .NET 4.8
3838
```
3939

4040
What is going to happen if you provide multiple Full .NET Framework monikers? Let's say:
@@ -67,8 +67,8 @@ namespace BenchmarkDotNet.Samples
6767
{
6868
[SimpleJob(RuntimeMoniker.Net48)]
6969
[SimpleJob(RuntimeMoniker.Mono)]
70-
[SimpleJob(RuntimeMoniker.NetCoreApp21)]
71-
[SimpleJob(RuntimeMoniker.NetCoreApp30)]
70+
[SimpleJob(RuntimeMoniker.NetCoreApp31)]
71+
[SimpleJob(RuntimeMoniker.Net80)]
7272
public class TheClassWithBenchmarks
7373
```
7474

@@ -114,9 +114,9 @@ public class MyConfig : ManualConfig
114114
Add(Job.Default.With(
115115
CsProjCoreToolchain.From(
116116
new NetCoreAppSettings(
117-
targetFrameworkMoniker: "netcoreapp2.1",
118-
runtimeFrameworkVersion: "2.1.0-preview2-25628-01",
119-
name: ".NET Core 2.1"))));
117+
targetFrameworkMoniker: "net8.0-windows",
118+
runtimeFrameworkVersion: "8.0.101",
119+
name: ".NET 8.0 Windows"))));
120120
}
121121
}
122122
```
@@ -145,11 +145,11 @@ public class CustomPathsConfig : ManualConfig
145145
public CustomPathsConfig()
146146
{
147147
var dotnetCli32bit = NetCoreAppSettings
148-
.NetCoreApp20
148+
.NetCoreApp31
149149
.WithCustomDotNetCliPath(@"C:\Program Files (x86)\dotnet\dotnet.exe", "32 bit cli");
150150

151151
var dotnetCli64bit = NetCoreAppSettings
152-
.NetCoreApp20
152+
.NetCoreApp31
153153
.WithCustomDotNetCliPath(@"C:\Program Files\dotnet\dotnet.exe", "64 bit cli");
154154

155155
AddJob(Job.RyuJitX86.WithToolchain(CsProjCoreToolchain.From(dotnetCli32bit)).WithId("32 bit cli"));

docs/articles/guides/console-args.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -117,29 +117,29 @@ You can also filter the benchmarks by categories:
117117
The `--runtimes` or just `-r` allows you to run the benchmarks for selected Runtimes. Available options are:
118118

119119
* Clr - BDN will either use Roslyn (if you run it as .NET app) or latest installed .NET SDK to build the benchmarks (if you run it as .NET Core app).
120-
* Core - if you run it as .NET Core app, BDN will use the same target framework moniker, if you run it as .NET app it's going to use netcoreapp2.1.
120+
* Core - if you run it as .NET Core app, BDN will use the same target framework moniker, if you run it as .NET app it's going to use net8.0.
121121
* Mono - it's going to use the Mono from `$Path`, you can override it with `--monoPath`.
122122
* net46, net461, net462, net47, net471, net472, net48, net481 - to build and run benchmarks against specific .NET Framework version.
123-
* netcoreapp2.0, netcoreapp2.1, netcoreapp2.2, netcoreapp3.0, netcoreapp3.1, net5.0, net6.0, net7.0, net8.0, net9.0 - to build and run benchmarks against specific .NET (Core) version.
123+
* netcoreapp3.1, net5.0, net6.0, net7.0, net8.0 - to build and run benchmarks against specific .NET (Core) version.
124124
* nativeaot5.0, nativeaot6.0, nativeaot7.0, nativeaot8.0 - to build and run benchmarks using NativeAOT. Can be customized with additional options: `--ilcPackages`, `--ilCompilerVersion`.
125125
* mono6.0, mono7.0, mono8.0 - to build and run benchmarks with .Net 6+ using MonoVM.
126126

127-
Example: run the benchmarks for .NET 4.7.2 and .NET Core 2.1:
127+
Example: run the benchmarks for .NET 4.7.2 and .NET 8.0:
128128

129129
```log
130-
dotnet run -c Release -- --runtimes net472 netcoreapp2.1
130+
dotnet run -c Release -- --runtimes net472 net8.0
131131
```
132132

133-
Example: run the benchmarks for .NET Core 3.0 and latest .NET SDK installed on your PC:
133+
Example: run the benchmarks for .NET Core 3.1 and latest .NET SDK installed on your PC:
134134

135135
```log
136-
dotnet run -c Release -f netcoreapp3.0 -- --runtimes clr core
136+
dotnet run -c Release -f netcoreapp3.1 -- --runtimes clr core
137137
```
138138

139-
But same command executed with `-f netcoreapp2.0` is going to run the benchmarks for .NET Core 2.0:
139+
But same command executed with `-f net6.0` is going to run the benchmarks for .NET 6.0:
140140

141141
```log
142-
dotnet run -c Release -f netcoreapp2.0 -- --runtimes clr core
142+
dotnet run -c Release -f net6.0 -- --runtimes clr core
143143
```
144144

145145
## Number of invocations and iterations
@@ -208,10 +208,10 @@ To perform a Mann–Whitney U Test and display the results in a dedicated column
208208

209209
* `--statisticalTest`- Threshold for Mann–Whitney U Test. Examples: 5%, 10ms, 100ns, 1s
210210

211-
Example: run Mann–Whitney U test with relative ratio of 5% for all benchmarks for .NET Core 2.0 (base) vs .NET Core 2.1 (diff). .NET Core 2.0 will be baseline because it was first.
211+
Example: run Mann–Whitney U test with relative ratio of 5% for all benchmarks for .NET 6.0 (base) vs .NET 8.0 (diff). .NET 6.0 will be baseline because it was first.
212212

213213
```log
214-
dotnet run -c Release -- --filter * --runtimes netcoreapp2.0 netcoreapp2.1 --statisticalTest 5%
214+
dotnet run -c Release -- --filter * --runtimes net6.0 net8.0 --statisticalTest 5%
215215
```
216216

217217
## More

src/BenchmarkDotNet/ConsoleArguments/CommandLineOptions.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ public static IEnumerable<Example> Examples
237237

238238
yield return new Example("Use Job.ShortRun for running the benchmarks", shortName, new CommandLineOptions { BaseJob = "short" });
239239
yield return new Example("Run benchmarks in process", shortName, new CommandLineOptions { RunInProcess = true });
240-
yield return new Example("Run benchmarks for .NET 4.7.2, .NET Core 2.1 and Mono. .NET 4.7.2 will be baseline because it was first.", longName, new CommandLineOptions { Runtimes = new[] { "net472", "netcoreapp2.1", "Mono" } });
241-
yield return new Example("Run benchmarks for .NET Core 2.0, .NET Core 2.1 and .NET Core 2.2. .NET Core 2.0 will be baseline because it was first.", longName, new CommandLineOptions { Runtimes = new[] { "netcoreapp2.0", "netcoreapp2.1", "netcoreapp2.2" } });
240+
yield return new Example("Run benchmarks for .NET 4.7.2, .NET 8.0 and Mono. .NET 4.7.2 will be baseline because it was first.", longName, new CommandLineOptions { Runtimes = new[] { "net472", "net8.0", "Mono" } });
241+
yield return new Example("Run benchmarks for .NET Core 3.1, .NET 6.0 and .NET 8.0. .NET Core 3.1 will be baseline because it was first.", longName, new CommandLineOptions { Runtimes = new[] { "netcoreapp3.1", "net6.0", "net8.0" } });
242242
yield return new Example("Use MemoryDiagnoser to get GC stats", shortName, new CommandLineOptions { UseMemoryDiagnoser = true });
243243
yield return new Example("Use DisassemblyDiagnoser to get disassembly", shortName, new CommandLineOptions { UseDisassemblyDiagnoser = true });
244244
yield return new Example("Use HardwareCountersDiagnoser to get hardware counter info", longName, new CommandLineOptions { HardwareCounters = new[] { nameof(HardwareCounter.CacheMisses), nameof(HardwareCounter.InstructionRetired) } });
@@ -250,8 +250,8 @@ public static IEnumerable<Example> Examples
250250
yield return new Example("Run selected benchmarks once per iteration", longName, new CommandLineOptions { RunOncePerIteration = true });
251251
yield return new Example("Run selected benchmarks 100 times per iteration. Perform single warmup iteration and 5 actual workload iterations", longName, new CommandLineOptions { InvocationCount = 100, WarmupIterationCount = 1, IterationCount = 5});
252252
yield return new Example("Run selected benchmarks 250ms per iteration. Perform from 9 to 15 iterations", longName, new CommandLineOptions { IterationTimeInMilliseconds = 250, MinIterationCount = 9, MaxIterationCount = 15});
253-
yield return new Example("Run MannWhitney test with relative ratio of 5% for all benchmarks for .NET Core 2.0 (base) vs .NET Core 2.1 (diff). .NET Core 2.0 will be baseline because it was provided as first.", longName,
254-
new CommandLineOptions { Filters = new[] { "*"}, Runtimes = new[] { "netcoreapp2.0", "netcoreapp2.1" }, StatisticalTestThreshold = "5%" });
253+
yield return new Example("Run MannWhitney test with relative ratio of 5% for all benchmarks for .NET 6.0 (base) vs .NET 8.0 (diff). .NET Core 6.0 will be baseline because it was provided as first.", longName,
254+
new CommandLineOptions { Filters = new[] { "*"}, Runtimes = new[] { "net6.0", "net8.0" }, StatisticalTestThreshold = "5%" });
255255
yield return new Example("Run benchmarks using environment variables 'ENV_VAR_KEY_1' with value 'value_1' and 'ENV_VAR_KEY_2' with value 'value_2'", longName,
256256
new CommandLineOptions { EnvironmentVariables = new[] { "ENV_VAR_KEY_1:value_1", "ENV_VAR_KEY_2:value_2" } });
257257
yield return new Example("Hide Mean and Ratio columns (use double quotes for multi-word columns: \"Alloc Ratio\")", shortName, new CommandLineOptions { HiddenColumns = new[] { "Mean", "Ratio" }, });

src/BenchmarkDotNet/Templates/CsProj.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
2727
<!-- fix for NETSDK1150: https://docs.microsoft.com/en-us/dotnet/core/compatibility/sdk/5.0/referencing-executable-generates-error -->
2828
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
29-
<!-- fix System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.0 -->
29+
<!-- Suppress warning for nuget package used in old (unsupported) tfm. -->
3030
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
3131
<StartupObject>BenchmarkDotNet.Autogenerated.UniqueProgramName</StartupObject>
3232
</PropertyGroup>

src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
2121
<StartupObject>BenchmarkDotNet.Autogenerated.UniqueProgramName</StartupObject>
2222
<SelfContained>true</SelfContained>
23-
<!-- fix System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.0 -->
23+
<!-- Suppress warning for nuget package used in old (unsupported) tfm. -->
2424
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
2525
</PropertyGroup>
2626

src/BenchmarkDotNet/Templates/WasmCsProj.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
2727
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
2828
<EnableDefaultWasmAssembliesToBundle>false</EnableDefaultWasmAssembliesToBundle>
29-
<!-- fix System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.0 -->
29+
<!-- Suppress warning for nuget package used in old (unsupported) tfm. -->
3030
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
3131
<StartupObject>BenchmarkDotNet.Autogenerated.UniqueProgramName</StartupObject>
3232
</PropertyGroup>

src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunToolchain.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ public class CoreRunToolchain : IToolchain
1515
/// </summary>
1616
/// <param name="coreRun">the path to CoreRun</param>
1717
/// /<param name="createCopy">should a copy of CoreRun be performed? True by default. <remarks>The toolchain replaces old dependencies in CoreRun folder with newer versions if used by the benchmarks.</remarks></param>
18-
/// <param name="targetFrameworkMoniker">TFM, netcoreapp2.1 is the default</param>
18+
/// <param name="targetFrameworkMoniker">TFM, net8.0 is the default</param>
1919
/// <param name="customDotNetCliPath">path to dotnet cli, if not provided the one from PATH will be used</param>
2020
/// <param name="displayName">display name, CoreRun is the default value</param>
2121
/// <param name="restorePath">the directory to restore packages to</param>
2222
public CoreRunToolchain(FileInfo coreRun, bool createCopy = true,
23-
string targetFrameworkMoniker = "netcoreapp2.1",
23+
string targetFrameworkMoniker = "net8.0",
2424
FileInfo? customDotNetCliPath = null, DirectoryInfo? restorePath = null,
2525
string displayName = "CoreRun")
2626
{

src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ private string GenerateProjectForNuGetBuild(BuildPartition buildPartition, Artif
143143
<EnsureNETCoreAppRuntime>false</EnsureNETCoreAppRuntime> <!-- workaround for 'This runtime may not be supported by.NET Core.' error -->
144144
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles> <!-- workaround for 'Found multiple publish output files with the same relative path.' error -->
145145
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
146-
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings> <!-- fix System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.0 -->
146+
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings> <!-- Suppress warning for nuget package used in old (unsupported) tfm. -->
147147
{GetInstructionSetSettings(buildPartition)}
148148
</PropertyGroup>
149149
{GetRuntimeSettings(buildPartition.RepresentativeBenchmarkCase.Job.Environment.Gc, buildPartition.Resolver)}

tests/BenchmarkDotNet.IntegrationTests.ManualRunning/LocalNativeAotToolchainTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace BenchmarkDotNet.IntegrationTests.ManualRunning
1313
/// to run these tests please clone and build NativeAOT first,
1414
/// then update the hardcoded path
1515
/// and run following command from console:
16-
/// dotnet test -c Release -f netcoreapp2.1 --filter "FullyQualifiedName~BenchmarkDotNet.IntegrationTests.ManualRunning.LocalNativeAotToolchainTests"
16+
/// dotnet test -c Release -f net8.0 --filter "FullyQualifiedName~BenchmarkDotNet.IntegrationTests.ManualRunning.LocalNativeAotToolchainTests"
1717
///
1818
/// in perfect world we would do this OOB for you, but building NativeAOT
1919
/// so it's not part of our CI jobs
@@ -29,7 +29,7 @@ public void CanBenchmarkLocalBuildUsingRyuJit()
2929
{
3030
var config = ManualConfig.CreateEmpty()
3131
.AddJob(Job.Dry
32-
.WithRuntime(NativeAotRuntime.Net60)
32+
.WithRuntime(NativeAotRuntime.Net80)
3333
.WithToolchain(
3434
NativeAotToolchain.CreateBuilder()
3535
.UseLocalBuild(new System.IO.DirectoryInfo(IlcPath))

tests/BenchmarkDotNet.Tests/ConfigParserTests.cs

+6
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,12 @@ public void IlCompilerPathParsedCorrectly()
275275
[InlineData("netcoreapp2.1", true)]
276276
[InlineData("netcoreapp2.2", true)]
277277
[InlineData("netcoreapp3.0", true)]
278+
[InlineData("netcoreapp3.1", true)]
279+
[InlineData("net5.0", true)]
280+
[InlineData("net6.0", true)]
281+
[InlineData("net7.0", true)]
282+
[InlineData("net8.0", true)]
283+
[InlineData("net9.0", true)]
278284
[InlineData("net462", false)]
279285
[InlineData("net48", false)]
280286
public void DotNetCliParsedCorrectly(string tfm, bool isCore)

tests/BenchmarkDotNet.Tests/RuntimeVersionDetectionTests.cs

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ public class RuntimeVersionDetectionTests
1818
[InlineData(".NETCoreApp,Version=v3.0", RuntimeMoniker.NetCoreApp30, "netcoreapp3.0")]
1919
[InlineData(".NETCoreApp,Version=v3.1", RuntimeMoniker.NetCoreApp31, "netcoreapp3.1")]
2020
[InlineData(".NETCoreApp,Version=v5.0", RuntimeMoniker.Net50, "net5.0")]
21+
[InlineData(".NETCoreApp,Version=v6.0", RuntimeMoniker.Net60, "net6.0")]
22+
[InlineData(".NETCoreApp,Version=v7.0", RuntimeMoniker.Net70, "net7.0")]
23+
[InlineData(".NETCoreApp,Version=v8.0", RuntimeMoniker.Net80, "net8.0")]
24+
[InlineData(".NETCoreApp,Version=v9.0", RuntimeMoniker.Net90, "net9.0")]
2125
[InlineData(".NETCoreApp,Version=v123.0", RuntimeMoniker.NotRecognized, "net123.0")]
2226
public void TryGetVersionFromFrameworkNameHandlesValidInput(string frameworkName, RuntimeMoniker expectedTfm, string expectedMsBuildMoniker)
2327
{
@@ -125,6 +129,8 @@ public void CurrentRuntimeIsProperlyRecognized()
125129
Assert.True(runtime is CoreRuntime coreRuntime && coreRuntime.RuntimeMoniker == RuntimeMoniker.NetCoreApp31);
126130
#elif NETCOREAPP5_0
127131
Assert.True(runtime is CoreRuntime coreRuntime && coreRuntime.RuntimeMoniker == RuntimeMoniker.NetCoreApp50);
132+
#elif NET8_0
133+
Assert.True(runtime is CoreRuntime coreRuntime && coreRuntime.RuntimeMoniker == RuntimeMoniker.Net80);
128134
#endif
129135
}
130136
}

tests/runCoreTests.cmd

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,24 @@ if NOT %ERRORLEVEL% == 0 (
1212
)
1313

1414
echo -----------------------------
15-
echo Running Core 2.1 Unit tests
15+
echo Running Core 8.0 Unit tests
1616
echo -----------------------------
1717

18-
call dotnet test "BenchmarkDotNet.Tests\BenchmarkDotNet.Tests.csproj" --configuration Release --framework netcoreapp2.1
18+
call dotnet test "BenchmarkDotNet.Tests\BenchmarkDotNet.Tests.csproj" --configuration Release --framework net8.0
1919

2020
if NOT %ERRORLEVEL% == 0 (
21-
echo CORE 2.1 Unit tests has failed
21+
echo Core 8.0 Unit tests has failed
2222
goto end
2323
)
2424

2525
echo -----------------------------
26-
echo Running Core 2.1 Integration tests
26+
echo Running 8.0 Integration tests
2727
echo -----------------------------
2828

29-
call dotnet test "BenchmarkDotNet.IntegrationTests\BenchmarkDotNet.IntegrationTests.csproj" --configuration Release --framework netcoreapp2.1
29+
call dotnet test "BenchmarkDotNet.IntegrationTests\BenchmarkDotNet.IntegrationTests.csproj" --configuration Release --framework net8.0
3030

3131
if NOT %ERRORLEVEL% == 0 (
32-
echo CORE 2.1 Integration tests has failed
32+
echo Core 8.0 Integration tests has failed
3333
goto end
3434
)
3535

0 commit comments

Comments
 (0)