Nbench: dotnet-nbench dapat secara tidak sengaja mencoba mengeksekusi [nama-perakitan].deps.json alih-alih perakitan

Dibuat pada 22 Jan 2019  ·  5Komentar  ·  Sumber: petabridge/NBench

Terjadi pada node yang menjalankan .NET Core 2.2 dan yang lebih baru.

bug benchmark-execution netcore

Semua 5 komentar

Apakah ada solusi/alternatif untuk saat ini?

Saya mencoba mengubah target proyek tetapi menyadari masalahnya benar-benar dengan CLI. Saya membuatnya bekerja dengan:
1) mengubah versi CLI untuk proyek itu dengan menambahkan global.json (ref: https://markheath.net/post/switching-between-netcore-sdk-versions )

2) saya kemudian mengalami kesalahan tentang tidak memiliki 2.1 untuk kerangka kerja yang mengharuskan menambahkan ini ke file csproj di PropertyGroup:
2.1.6

3) Kemudian ada kesalahan tentang paket yang dipulihkan dengan runtime yang berbeda dari build/publish. Perbaiki untuk itu hanya menjalankan "dotnet restore" dari cli lagi.

Setelah itu, saya dapat menjalankan "dotnet nbench" terhadap proyek itu dengan baik.

Terima kasih telah memposting solusi terperinci! @izavala dan saya sedang mencari untuk melakukan perbaikan kegunaan besar lainnya untuk NBench 2.0 dan ini akan ada di daftar kami untuk itu.

Hanya dalam kasus seseorang berjalan ke dalam ini, tapi seperti saya tidak bisa biola dengan kerangka target atau global.json , kerja-sekitar lain adalah dengan menggunakan berdokumen --fx-version {version} bendera dengan dotnet nbench , Misalnya:

fxversion=$(dotnet --list-runtimes | \
    grep Microsoft.NETCore.App | \
    awk '{ print $2 }' | \
    tail -1)

dotnet nbench --fx-version $fxversion

Atau:

$fxversion = dotnet --list-runtimes | `
    select-string "Microsoft.NETCore.App" | `
    select-object -last 1 | `
    foreach-object { $data = $_ -split " "; $data[1] }

dotnet nbench --fx-version $fxversion

Alasan perintah gagal tanpa ini adalah karena runner memformat perintah dotnet exec dengan variabel fxVersion , dan ketika kosong, ini menghasilkan --fx-version --depsfile "Foo.deps.json" . Ini pada gilirannya diuraikan oleh dotnet exec seolah-olah --depsfile adalah nilai untuk flag --fx-version , dan Foo.deps.json ini ditafsirkan sebagai file Majelis untuk dijalankan .

Baris yang menyinggung: https://github.com/petabridge/NBench/blob/557f2fbca250a4a45636f5e4b41b58b8440b33f2/src/NBench.Runner.DotNetCli/Program.cs#L284

Tambalan ini harus memperbaikinya tetapi saya tidak punya waktu untuk melakukan pengujian yang tepat dan/atau permintaan tarik sekarang:

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}"" ";

Diselesaikan melalui NBench 2.0.0 https://github.com/petabridge/NBench/releases/tag/2.0.0 - tidak ada lagi dotnet nbench .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat