Nbench: Указанная версия фреймворка 2.1 не может быть проанализирована

Созданный на 15 окт. 2018  ·  7Комментарии  ·  Источник: petabridge/NBench

dotnet nbench не удалось с приведенным ниже журналом.

❯ 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

Все 7 Комментарий

@HIPERCUBE, это может быть проблема в вашей среде, но позвольте мне дважды проверить.

У вас есть global.json или что-нибудь в вашем проекте, которое указывает версию среды выполнения?

Может подтвердить проблемы с запуском NBench с ядром dotnet 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]

У меня нет файла gloabl.json и другие проекты 2.1 работают нормально. Я также установил среду выполнения 2.1, чтобы дважды проверить, есть ли несоответствие версии, но она все еще не работает.

Если это поможет, я обнаружил, что добавление <RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion> в мой .csproj устранило проблему (благодарность @ Rene-Sackers за решение, которое они перечислили здесь: https://github.com/dotnet/cli/issues/ 10111 # issuecomment-429014700).

Насколько я могу судить, это проблема с dotnet CLI - просмотр некоторых связанных проблем и др. Выписанные здесь ошибки не связаны с NBench - они от процесса dotnet который dotnet-nbench порождает для выполнения средства запуска тестов.

У меня такое ощущение, что основная причина проблемы может быть в том, как мы вызываем процесс dotnet , используя этот класс DotNetMuxer мы импортировали из ASP.NET Core:

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

Я создал проект воспроизведения: https://github.com/Aaronontheweb/NBenchNetCore2.1Repro

Когда я вызываю dotnet build а затем dotnet nbench в этом примере проекта, я получаю следующий результат:

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

В этом случае используется NBench 1.2.2 и dotnet --version 2.1.300.

Это очень похоже на проблему с окружающей средой, как это часто случалось с аналогичными проблемами с dotnet xunit в прошлом. Если бы вы могли предоставить нам дополнительную информацию о том, как выглядит ваша среда или спецификации воспроизведения, я снова открою эту проблему и продолжу исправлять ее.

А пока вы можете попробовать обходной путь, указав явную версию времени выполнения в соответствии с предложением @C-Babbage.

Следуя за этим, я сам смог воспроизвести эту проблему, работая над https://github.com/petabridge/Petabridge.Tracing.Zipkin/pull/68

Я пришел к тому же выводу, что и команды Entity Framework и XUnit: это проблема самого интерфейса командной строки, и обходной путь, похоже, заключается в указании RuntimeFrameworkVersion внутри ваших тестовых проектов. Это дает CLI необходимую информацию, необходимую для правильного разрешения среды выполнения .NET Core.

Надеюсь, это улучшится в будущем, но эта ошибка возникает после того, как dotnet-nbench запускает новый процесс dotnet для запуска спецификаций - это проблема интерфейса командной строки.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги