Возникает на узлах с .NET Core 2.2 и новее.
Есть ли на данный момент обходной путь / альтернатива?
Я попытался изменить цель проекта, но понял, что проблема действительно в интерфейсе командной строки. У меня это работает:
1) изменение версии интерфейса командной строки для этого проекта путем добавления global.json (ссылка: https://markheath.net/post/switching-between-netcore-sdk-versions)
2) Затем у меня возникла ошибка из-за отсутствия 2.1 для фреймворка, который требовал добавления этого в файл csproj в PropertyGroup:
3) Затем возникла ошибка о пакетах, восстановленных с другой средой выполнения, чем сборка / публикация. Исправить это было просто, чтобы снова запустить «dotnet restore» из cli.
После этого я смог запустить «dotnet nbench» против этого проекта.
Спасибо, что опубликовали подробное решение! Мы с @izavala собираемся провести еще одну серьезную модернизацию юзабилити NBench 2.0, и это будет в нашем списке для этого.
На всякий случай, если кто-то столкнется с этим, но, как и я, не могу возиться с целевыми фреймворками или global.json
, другой обходной путь - использовать недокументированный флаг --fx-version {version}
с dotnet nbench
, Например:
fxversion=$(dotnet --list-runtimes | \
grep Microsoft.NETCore.App | \
awk '{ print $2 }' | \
tail -1)
dotnet nbench --fx-version $fxversion
Или:
$fxversion = dotnet --list-runtimes | `
select-string "Microsoft.NETCore.App" | `
select-object -last 1 | `
foreach-object { $data = $_ -split " "; $data[1] }
dotnet nbench --fx-version $fxversion
Причина , по которой команда не без этого является то , что бегун форматирует dotnet exec
команду с fxVersion
переменной, и , когда он пуст, это приводит к --fx-version --depsfile "Foo.deps.json"
. Это, в свою очередь, анализируется dotnet exec
как если бы --depsfile
было значением для флага --fx-version
, а следующий Foo.deps.json
интерпретируется как файл сборки для запуска .
Оскорбительная строка: https://github.com/petabridge/NBench/blob/557f2fbca250a4a45636f5e4b41b58b8440b33f2/src/NBench.Runner.DotNetCli/Program.cs#L284
Этот патч должен исправить это, но у меня сейчас нет времени на правильное тестирование и / или запрос на перенос:
diff --git a/src/NBench.Runner.DotNetCli/Program.cs b/src/NBench.Runner.DotNetCli/Program.cs
index c45b32e..417319c 100644
--- a/src/NBench.Runner.DotNetCli/Program.cs
+++ b/src/NBench.Runner.DotNetCli/Program.cs
@@ -281,7 +281,10 @@ namespace NBench.Runner.DotNetCli
var depsFile = targetFileNameWithoutExtension + ".deps.json";
var runtimeConfigJson = targetFileNameWithoutExtension + ".runtimeconfig.json";
- var args = $@"exec --fx-version {fxVersion} --depsfile ""{depsFile}"" ";
+ var args = $@"exec --depsfile ""{depsFile}"" ";
+
+ if (!string.IsNullOrWhiteSpace(fxVersion))
+ args += $"--fx-version {fxVersion} ";
if (File.Exists(Path.Combine(workingDirectory, runtimeConfigJson)))
args += $@"--runtimeconfig ""{runtimeConfigJson}"" ";
Решено через NBench 2.0.0 https://github.com/petabridge/NBench/releases/tag/2.0.0 - больше не нужно dotnet nbench
.