Nbench: dotnet-nbenchが誤ってアセンブリの代わりに[assembly-name] .deps.jsonを実行しようとする可能性があります

作成日 2019年01月22日  ·  5コメント  ·  ソース: petabridge/NBench

.NET Core2.2以降を実行しているノードで発生します。

bug benchmark-execution netcore

全てのコメント5件

今のところ回避策/代替手段はありますか?

プロジェクトのターゲットを変更しようとしましたが、問題は本当にCLIにあることに気付きました。 私はそれを次の方法で動作させました:
1)global.jsonを追加してそのプロジェクトのCLIのバージョンを変更します(参照:https://markheath.net/post/switching-between-netcore-sdk-versions)

2)次に、PropertyGroupのcsprojファイルにこれを追加する必要があるフレームワークに2.1がないというエラーが発生しました。
2.1.6

3)次に、ビルド/公開とは異なるランタイムで復元されたパッケージに関するエラーが発生しました。 そのための修正は、CLIから「dotnetrestore」を再度実行することでした。

その後、そのプロジェクトに対して「dotnetnbench」を正常に実行することができました。

詳細な回避策を投稿していただきありがとうございます。 @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"です。 これは、 --depsfile--fx-versionフラグの値であるかのように、 dotnet execによって解析され、次の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.0https //github.com/petabridge/NBench/releases/tag/2.0.0を介して解決- dotnet nbenchはもう必要ありません。

このページは役に立ちましたか?
0 / 5 - 0 評価