Nbench: La version de framework spécifiée '2.1' n'a pas pu être analysée

Créé le 15 oct. 2018  ·  7Commentaires  ·  Source: petabridge/NBench

dotnet nbench a échoué avec le journal ci-dessous.

❯ 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

Tous les 7 commentaires

@HIPERCUBE cela pourrait être un problème avec votre environnement - mais permettez-moi de vérifier.

Avez-vous un global.json ou quelque chose dans votre projet qui spécifie une version d'exécution ?

Peut confirmer les problèmes d'exécution de NBench avec dotnet core 2.1

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]

Je n'ai pas gloabl.json fichier

Si cela peut vous aider, j'ai trouvé que l'ajout de <RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion> à mon .csproj a résolu le problème (le mérite revient à @Rene-Sackers pour la solution qu'ils ont répertoriée ici : https://github.com/dotnet/cli/issues/ 10111#issuecomment-429014700).

Cela semble être un problème avec la CLI dotnet , pour autant que je sache - en parcourant certains des problèmes liés et al. Les erreurs écrites ici ne proviennent pas de NBench - elles proviennent du processus dotnet que dotnet-nbench génère pour exécuter le lanceur de test.

J'ai l'impression que la cause première du problème pourrait être la façon dont nous appelons le processus dotnet , en utilisant cette classe DotNetMuxer nous avons importée d'ASP.NET Core :

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

J'ai créé un projet de reproduction : https://github.com/Aaronontheweb/NBenchNetCore2.1Repro

Lorsque j'appelle dotnet build puis dotnet nbench sur l'exemple de projet, j'obtiens le résultat suivant :

λ  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 ----------

En utilisant NBench 1.2.2 et dotnet --version 2.1.300 dans ce cas.

Cela ressemble donc beaucoup à un problème d'environnement, comme cela a souvent été le cas avec des problèmes similaires avec dotnet xunit dans le passé. Si vous pouviez nous fournir plus d'informations sur l'apparence de votre environnement ou une spécification de reproduction, je rouvrirai ce problème et continuerai à le réduire.

En attendant, vous pouvez essayer une solution de contournement en spécifiant une version d'exécution explicite selon la suggestion de @C-Babbage.

Suite à cela, j'ai pu reproduire ce problème moi-même en travaillant sur https://github.com/petabridge/Petabridge.Tracing.Zipkin/pull/68

Je suis arrivé à la même conclusion que les équipes Entity Framework et XUnit : il s'agit d'un problème avec la CLI elle-même et la solution de contournement semble spécifier le RuntimeFrameworkVersion dans vos projets de test. Cela donne à la CLI les informations nécessaires pour résoudre correctement votre runtime .NET Core.

Espérons que cela s'améliore à l'avenir, mais cette erreur se produit après que dotnet-nbench lance un nouveau processus dotnet pour exécuter les spécifications - c'est un problème CLI.

Cette page vous a été utile?
0 / 5 - 0 notes