Nbench: Die angegebene Framework-Version '2.1' konnte nicht geparst werden

Erstellt am 15. Okt. 2018  ·  7Kommentare  ·  Quelle: petabridge/NBench

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]
bug benchmark-execution

Alle 7 Kommentare

@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:

https://github.com/petabridge/NBench/blob/557f2fbca250a4a45636f5e4b41b58b8440b33f2/src/NBench.Runner.DotNetCli/DotNetMuxer.cs#L1 -L74

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen