dotnet nbench
ist mit dem folgenden Protokoll fehlgeschlagen.
❯ dotnet nbench
Building for framework netcoreapp2.1...
Benchmark.SimepleOneway.Local -> /SolutionDir/ProjectDir/bin/Release/netcoreapp2.1/Benchmark.SimepleOneway.Local.dll
Running .NET Core 2.1 tests for framework netcoreapp2.1...
OutputDir /SolutionDir/ProjectDir/PerfResults
The specified framework version '2.1' could not be parsed
The specified framework 'Microsoft.NETCore.App', version '2.1' was not found.
- Check application dependencies and target a framework version installed at:
/usr/local/share/dotnet/
- Installing .NET Core prerequisites might help resolve this problem:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
- The .NET Core framework and SDK can be installed from:
https://aka.ms/dotnet-download
- The following versions are installed:
2.0.9 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
2.1.3 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
2.1.5 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
@HIPERCUBE Dies könnte ein Problem mit Ihrer Umgebung sein - aber lassen Sie mich das überprüfen.
Haben Sie ein global.json
oder etwas in Ihrem Projekt, das eine Laufzeitversion angibt?
Kann Probleme beim Ausführen von NBench mit Dotnet Core 2.1 . bestätigen
The specified framework version '2.1' could not be parsed
The specified framework 'Microsoft.NETCore.App', version '2.1' was not found.
- Check application dependencies and target a framework version installed at:
C:\Program Files\dotnet\
- Installing .NET Core prerequisites might help resolve this problem:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
- The .NET Core framework and SDK can be installed from:
https://aka.ms/dotnet-download
- The following versions are installed:
2.0.6 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.0.7 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.0.9 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.1.1 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.1.2 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.1.3-servicing-26724-03 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.1.4 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
2.1.5 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Ich habe keine gloabl.json
Datei und andere 2.1-Projekte laufen einwandfrei. Ich habe auch die 2.1-Runtime installiert, um zu überprüfen, ob ein Versionskonflikt vorliegt, aber es funktioniert immer noch nicht.
Wenn es hilft, habe ich festgestellt, dass das Hinzufügen von <RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>
zu meinem .csproj das Problem behoben hat (Gutschrift geht an @Rene-Sackers für die Lösung, die sie hier aufgelistet haben: https://github.com/dotnet/cli/issues/ 10111#issuecomment-429014700).
Dies scheint ein Problem mit der dotnet
CLI zu sein, soweit ich das beurteilen kann - wenn ich einige der verlinkten Probleme durchschaue et al. Die hier geschriebenen Fehler stammen nicht von NBench - sie stammen vom dotnet
Prozess, der dotnet-nbench
erzeugt, um den Test Runner auszuführen.
Ich habe das Gefühl, dass die Hauptursache des Problems darin liegen könnte, wie wir den dotnet
Prozess aufrufen, indem wir diese DotNetMuxer
Klasse verwenden, die wir aus ASP.NET Core importiert haben:
Ich habe ein Reproduktionsprojekt erstellt: https://github.com/Aaronontheweb/NBenchNetCore2.1Repro
Wenn ich dotnet build
und dann dotnet nbench
für das Beispielprojekt dort aufrufe, erhalte ich die folgende Ausgabe:
λ dotnet nbench
Building for framework netcoreapp2.1...
NBenchRepro -> C:\Repositories\NBenchNetCore2.1Repro\NBenchRepro\bin\Release\netcoreapp2.1\NBenchRepro.dll
Running .NET Core 2.1.0 tests for framework netcoreapp2.1...
OutputDir C:\Repositories\NBenchNetCore2.1Repro\NBenchRepro\PerfResults
Executing Benchmarks in C:\Repositories\NBenchNetCore2.1Repro\NBenchRepro\bin\Release\netcoreapp2.1\NBenchRepro.dll
------------ STARTING NBenchRepro.CounterPerfSpecs+Benchmark ----------
--------------- BEGIN WARMUP ---------------
Elapsed: 00:00:00.1657419
[Counter] TestCounter - operations: 25,439,744.00 ,operations: /s 153,490,119.28 , ns / operations: 6.52
--------------- END WARMUP ---------------
--------------- BEGIN WARMUP ---------------
Elapsed: 00:00:00.1663968
[Counter] TestCounter - operations: 25,439,744.00 ,operations: /s 152,886,017.04 , ns / operations: 6.54
--------------- END WARMUP ---------------
--------------- BEGIN WARMUP ---------------
Elapsed: 00:00:00.1670527
[Counter] TestCounter - operations: 25,439,744.00 ,operations: /s 152,285,739.77 , ns / operations: 6.57
--------------- END WARMUP ---------------
--------------- BEGIN RUN ---------------
Elapsed: 00:00:00.1659459
[Counter] TestCounter - operations: 25,439,744.00 ,operations: /s 153,301,431.37 , ns / operations: 6.52
--------------- END RUN ---------------
--------------- BEGIN RUN ---------------
Elapsed: 00:00:00.1654938
[Counter] TestCounter - operations: 25,439,744.00 ,operations: /s 153,720,223.96 , ns / operations: 6.51
--------------- END RUN ---------------
--------------- BEGIN RUN ---------------
Elapsed: 00:00:00.1651669
[Counter] TestCounter - operations: 25,439,744.00 ,operations: /s 154,024,468.58 , ns / operations: 6.49
--------------- END RUN ---------------
--------------- RESULTS: NBenchRepro.CounterPerfSpecs+Benchmark ---------------
Test to ensure that a minimal throughput test can be rapidly executed.
--------------- DATA ---------------
[Counter] TestCounter: Max: 25,439,744.00 operations, Average: 25,439,744.00 operations, Min: 25,439,744.00 operations, StdDev: 0.00 operations
[Counter] TestCounter: Max / s: 154,024,468.58 operations, Average / s: 153,682,041.30 operations, Min / s: 153,301,431.37 operations, StdDev / s: 363,027.74 operations
--------------- ASSERTIONS ---------------
[PASS] Expected [Counter] TestCounter to must be greater than 10,000,000.00 operations; actual value was 153,682,041.30 operations.
------------ FINISHED NBenchRepro.CounterPerfSpecs+Benchmark ----------
Verwenden Sie in diesem Fall NBench 1.2.2 und dotnet --version
2.1.300.
Dies sieht also sehr nach einem Umgebungsproblem aus, wie es bei ähnlichen Problemen mit dotnet xunit
in der Vergangenheit oft der Fall war. Wenn Sie uns weitere Informationen über das Aussehen Ihrer Umgebung oder eine Reproduktionsspezifikation geben könnten, werde ich dieses Problem erneut aufgreifen und weiter daran arbeiten.
In der Zwischenzeit können Sie einen Workaround versuchen, indem Sie gemäß dem Vorschlag von @C-Babbage eine explizite Laufzeitversion angeben.
Im Anschluss daran konnte ich dieses Problem selbst reproduzieren, während ich an https://github.com/petabridge/Petabridge.Tracing.Zipkin/pull/68 arbeitete
Ich bin zu der gleichen Schlussfolgerung gekommen wie die Teams von Entity Framework und XUnit: Dies ist ein Problem mit der CLI selbst und die Problemumgehung scheint darin zu bestehen, RuntimeFrameworkVersion
in Ihren Testprojekten anzugeben. Dadurch erhält die CLI die erforderlichen Informationen, um Ihre .NET Core-Runtime korrekt aufzulösen.
Hoffentlich wird dies in Zukunft verbessert, aber dieser Fehler tritt auf, nachdem dotnet-nbench
einen neuen dotnet
Prozess gestartet hat, um die Spezifikationen auszuführen - es ist ein CLI-Problem.