Nbench: dotnet-nbench 可能会意外地尝试执行 [assembly-name].deps.json 而不是程序集

创建于 2019-01-22  ·  5评论  ·  资料来源: petabridge/NBench

发生在运行 .NET Core 2.2 及更高版本的节点上。

bug benchmark-execution netcore

所有5条评论

现在有解决方法/替代方法吗?

我尝试更改项目目标,但意识到问题确实出在 CLI 上。 我得到它的工作:
1)通过添加 global.json 来更改该项目的 CLI 版本(参考:https://markheath.net/post/switching-between-netcore-sdk-versions)

2)然后我有一个错误,关于没有 2.1 的框架需要将它添加到 PropertyGroup 中的 csproj 文件:
2.1.6

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

此页面是否有帮助?
0 / 5 - 0 等级