Nbench: يمكن أن تحاول dotnet-nbench بطريق الخطأ تنفيذ [اسم التجميع] .deps.json بدلاً من التجميع

تم إنشاؤها على ٢٢ يناير ٢٠١٩  ·  5تعليقات  ·  مصدر: petabridge/NBench

يحدث على العقد التي تعمل بنظام .NET Core 2.2 والإصدارات الأحدث.

bug benchmark-execution netcore

ال 5 كومينتر

هل يوجد حل / بديل في الوقت الحالي؟

حاولت تغيير هدف المشروع لكنني أدركت أن المشكلة تتعلق بالفعل بـ CLI. حصلت عليه تعمل من خلال:
1) تغيير إصدار CLI لهذا المشروع بإضافة global.json (المرجع: https://markheath.net/post/switching-between-netcore-sdk-versions)

2) كان لدي خطأ بشأن عدم وجود 2.1 لإطار عمل يتطلب إضافة هذا إلى ملف csproj في PropertyGroup:
2.1.6

3) ثم حدث خطأ حول الحزم المستعادة بوقت تشغيل مختلف عن build / publish. كان الإصلاح لذلك مجرد تشغيل "استعادة dotnet" من cli مرة أخرى.

بعد ذلك ، تمكنت من تشغيل "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

سبب فشل الأمر بدون ذلك هو أن العداء يقوم بتنسيق الأمر dotnet exec باستخدام المتغير fxVersion ، وعندما يكون فارغًا ، ينتج عنه --fx-version --depsfile "Foo.deps.json" . يتم تحليل هذا بدوره بواسطة dotnet exec كما لو أن --depsfile كانت قيمة علامة --fx-version ، ويتم تفسير Foo.deps.json كملف تجميع للتشغيل .

السطر المخالف: https://github.com/petabridge/NBench/blob/557f2fbca250a4a45636f5e4b41b58b8440b33f2/src/NBench.Runner.DotNetCli/Program.cs#L284

يجب أن يصلح هذا التصحيح ولكن ليس لدي الوقت لإجراء اختبار مناسب و / أو طلب سحب في الوقت الحالي:

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 التقييمات