发生在运行 .NET Core 2.2 及更高版本的节点上。
现在有解决方法/替代方法吗?
我尝试更改项目目标,但意识到问题确实出在 CLI 上。 我得到它的工作:
1)通过添加 global.json 来更改该项目的 CLI 版本(参考:https://markheath.net/post/switching-between-netcore-sdk-versions)
2)然后我有一个错误,关于没有 2.1 的框架需要将它添加到 PropertyGroup 中的 csproj 文件:
3) 然后有关于使用与构建/发布不同的运行时恢复的包的错误。 对此的修复只是再次从 cli 运行“dotnet restore”。
在那之后,我能够很好地针对该项目运行“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
没有这个命令失败的原因是运行程序使用fxVersion
变量格式化dotnet exec
命令,当它为空时,这会导致--fx-version --depsfile "Foo.deps.json"
。 这反过来由dotnet exec
解析,就好像--depsfile
是--fx-version
标志的值一样,下面的Foo.deps.json
被解释为要运行的程序集文件.
违规行: https :
这个补丁应该可以修复它,但我现在没有时间进行适当的测试和/或拉取请求:
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
。