Tritt auf Knoten auf, auf denen .NET Core 2.2 und höher ausgeführt wird.
Gibt es momentan einen Workaround/Alternative?
Ich habe versucht, das Projektziel zu ändern, habe aber festgestellt, dass das Problem wirklich an der CLI lag. Ich habe es zum Laufen gebracht von:
1) Ändern der CLI-Version für dieses Projekt durch Hinzufügen einer global.json (Ref: https://markheath.net/post/switching-between-netcore-sdk-versions )
2) Ich hatte dann einen Fehler, dass 2.1 für ein Framework nicht vorhanden war, das das Hinzufügen zur csproj-Datei in der PropertyGroup erforderte:
3) Hatte dann einen Fehler über Pakete, die mit einer anderen Laufzeit als build/publish wiederhergestellt wurden. Fix dafür war, "dotnet restore" erneut von der cli aus auszuführen.
Danach konnte ich "dotnet nbench" gegen dieses Projekt problemlos ausführen.
Danke für das Posten des ausführlichen Workarounds! @izavala und ich
Nur für den Fall, dass jemand darauf stößt, aber wie ich nicht mit den Zielframeworks oder global.json
, ist eine andere Problemumgehung die Verwendung des undokumentierten --fx-version {version}
Flags mit dotnet nbench
, zum Beispiel:
fxversion=$(dotnet --list-runtimes | \
grep Microsoft.NETCore.App | \
awk '{ print $2 }' | \
tail -1)
dotnet nbench --fx-version $fxversion
Oder:
$fxversion = dotnet --list-runtimes | `
select-string "Microsoft.NETCore.App" | `
select-object -last 1 | `
foreach-object { $data = $_ -split " "; $data[1] }
dotnet nbench --fx-version $fxversion
Der Grund dafür, dass der Befehl ohne dies fehlschlägt, ist, dass der Runner einen dotnet exec
Befehl mit der fxVersion
Variable formatiert, und wenn sie leer ist, ergibt dies --fx-version --depsfile "Foo.deps.json"
. Dies wird wiederum von dotnet exec
geparst, als ob --depsfile
der Wert für das --fx-version
Flag wäre, und das folgende Foo.deps.json
wird als auszuführende Assembly-Datei interpretiert .
Die beleidigende Zeile: https://github.com/petabridge/NBench/blob/557f2fbca250a4a45636f5e4b41b58b8440b33f2/src/NBench.Runner.DotNetCli/Program.cs#L284
Dieser Patch sollte es beheben, aber ich habe gerade keine Zeit, um ordnungsgemäße Tests und / oder einen Pull-Request durchzuführen:
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}"" ";
Gelöst über NBench 2.0.0 https://github.com/petabridge/NBench/releases/tag/2.0.0 - nicht mehr dotnet nbench
.