Aspnetcore: إعادة التحميل الساخن لـ Blazor

تم إنشاؤها على ٢٥ يناير ٢٠١٨  ·  130تعليقات  ·  مصدر: dotnet/aspnetcore

  • [] [إنشاء تحسين الأداء] (https://github.com/dotnet/aspnetcore/issues/22566)
  • [] عبر dotnet watch
  • [] تطوير البرامج الوسيطة (اتصال websocket لتلقي التحديثات)
Components Big Rock Design affected-most area-blazor enhancement severity-major

التعليق الأكثر فائدة

هذا مخطط لـ .NET 5 ، المقرر في نوفمبر 2020. ما زلنا نجري الكثير من المناقشات حول النهج الذي نريد اتباعه هنا.

ال 130 كومينتر

راجع https://github.com/aspnet/blazor/issues/193 للحصول على تحديثات الحالة لعنصر العمل هذا.

في الوقت الحالي ، يمكننا استخدام dotnet watch run وإعادة التحويل البرمجي في كل مرة يحدث فيها التغيير.
فقط باستخدام هذا في ملف csproj:
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
<Watch Include="**\*.cshtml"/>

لقد واجهنا عقبة مع إعادة التحميل المباشر لـ 0.2.0 ، لذا نقل هذا إلى الخارج حتى نتمكن من العمل من خلال تصميم أكثر قوة.

مرحبًا ، أنا أستخدم dotnet sdk 2.2.100-preview1-009349 و Blazor 0.5.1 ضمن Mac.
إعادة التحميل المباشر لا يعمل باستخدام "خدمة dotnet blazor". إذا قمت بتغيير بعض ترميز html في ملف cshtml ، فلن يقوم التطبيق بإعادة تحميل نفسه وبعد إعادة تحميل المتصفح يدويًا ، يعرض التطبيق محتوى html القديم. كيف يمكنني حل هذا؟

@ danroth27 ، ما هو https://github.com/aspnet/AspNetCore/issues/4056 إذن؟ هل يجب إغلاقه؟

بعض الأسئلة!
1 هل هذا المسار هو إعادة التحميل المباشر لكل من بليزر من جانب الخادم وسطح العميل؟

  1. هل ستعيش سفينة إعادة التحميل في الإصدار المباشر (أي في net core 3.0)؟
  2. هل ستفقد آلية إعادة التحميل المباشر حالة الصفحة (أي ما يعادل تحديث f5) أم أنها ستتصرف بطريقة مشابهة لاستبدال الوحدة النمطية الساخنة في أرض جافا سكريبت - أي فقط واجهة مستخدم المكونات التي تم تغييرها ستتم إعادة عرضها؟ إذا كان الأخير ، هل ستكون هناك آلية للحفاظ على حالة المكون على العميل بين التحديثات؟

هل هذا المسار إعادة التحميل المباشر لكل من بليزر جانب الخادم وجانب العميل؟

نعم

هل ستعيش سفينة إعادة التحميل في الإصدار المباشر (أي في net core 3.0)؟

بالنسبة إلى .NET Core 3.0 ، نتوقع دعم إعادة الإنشاء التلقائي بناءً على تغييرات الملف ، ولكنك ستظل بحاجة إلى تحديث المتصفح يدويًا.

هل ستفقد آلية إعادة التحميل المباشر حالة الصفحة (أي ما يعادل تحديث f5) أم أنها ستتصرف بطريقة مشابهة لاستبدال الوحدة النمطية الساخنة في أرض جافا سكريبت - أي فقط واجهة مستخدم المكونات التي تم تغييرها ستتم إعادة عرضها؟ إذا كان الأخير ، هل ستكون هناك آلية للحفاظ على حالة المكون على العميل بين التحديثات؟

ليس لدينا حاليًا خطة لدعم استبدال الوحدة الساخنة بطريقة تحافظ على حالة العميل.

ليس لدينا حاليًا خطة لدعم استبدال الوحدة الساخنة بطريقة تحافظ على حالة العميل.

على الأقل ، ليس آليًا. من الناحية النظرية ، إذا اتبعت بنية تشبه إعادة التشغيل ، أو أي شيء آخر يفصل تمامًا الحالة عن العرض ، فيمكنك إجراء تسلسل لهذه الحالة قبل التفريغ والاستعادة عند إعادة التحميل. ومع ذلك ، هذا ليس شيئًا نخطط لاستخدامه كميزة ، حيث لا يريد الجميع اتباع هذا النوع من الهندسة المعمارية.

ثم يمكنك إجراء تسلسل لهذه الحالة قبل التفريغ والاستعادة عند إعادة التحميل.

شكر. من فضلك ، بمجرد أن تكون جاهزًا ، هل ستكون قادرًا على توثيق الخطافات المناسبة (قبل التفريغ / إعادة التحميل وما إلى ذلك) المتوفرة في التصميم لتسهيل ذلك. أود أن أبدأ في تنفيذ / حزمة nuget المساعد لتمكين هذا النمط لأولئك الذين يريدون ذلك!

تعذر الحصول على dotnet watch run للعمل ، وحاول اتباع الخيارات الأخرى أيضًا ،

dotnet watch --project "Portfolio.Client" run --project "Portfolio.Server"

انتهى الأمر للتو بالحل الخام التالي باستخدام nodemon :

npx nodemon --watch "Portfolio.Client" -e razor,css,html,cs --exec 'dotnet run --project "Portfolio.Server"'

اعتقدت أنه من المفترض أن أركض:
dotnet watch --project BlazorTest.Client run
لكن هذا أعطاني خطأ.

إذا استخدمت:
dotnet watch --project BlazorTest.Server run

مع ما يلي في ملف مشروع BlazorTest.Server.csproj:

<ItemGroup>
    <Watch Include="..\**\*.razor" />
    <Watch Include="..\**\*.scss" />
    <Watch Include="..\**\*.cs" />
</ItemGroup>

لقد التقطت التغييرات في مشروع BlazorTest.Client وأعادت تشغيل الخادم ، لذلك كان علي فقط إجراء تحديث يدوي في المتصفح.

لقد التقطت التغييرات في مشروع BlazorTest.Client وأعادت تشغيل الخادم ، لذلك كان علي فقط إجراء تحديث يدوي في المتصفح.

هل هذا يعني إعادة تشغيل الخادم في كل مرة يكون هناك تغيير aa css, html ؟

dazinator ، نعم :-)

.. حسنًا ، مجرد التحقق ولكن هذا أمر سيء ، أليس كذلك؟ أي يجب أن تكون إعادة تشغيل الخادم غير ضرورية لتغيير ملف html أو css لأن تحديث المتصفح (مع إبطال ذاكرة التخزين المؤقت) يجب أن يكون كافياً؟

أنت على حق ، هذا ليس ضروريًا. ما عليك سوى إضافة أو إزالة امتدادات الملفات التي تهتم بها داخل <ItemGroup> . تحديث إجابتي لتجنب الالتباس.

عذرًا إذا كان خارج الموضوع ، فهل هناك أي طريقة لإعادة التحميل المباشر من Visual Studio الآن (جانب عميل Blazor)؟ في الوقت الحالي لكل تغيير باستثناء ملفات wwwroot ، يتعين علي إنشاء المشروع (Ctrl Shift B) وإعادة تحميل المتصفح. سيكون رائعًا إذا كان بإمكان VS البناء تلقائيًا على حفظ التغييرات.

datvm لقد قمنا بتمكين هذا لمشاريع Blazor من جانب الخادم ، لكننا بحاجة إلى القيام ببعض الأعمال لتمكين هذا مرة أخرى لمشاريع Blazor من جانب العميل ومكتبات فئة Razor. من المحتمل أن يمر قليل قبل أن نصل إلى هذا لأننا نركز الآن على شحن .NET Core 3.0.

بالنسبة إلى جانب العميل ، يمكنك على الأرجح استخدام أي شيء يقوم فقط بتحديث صفحة كاملة عندما يتغير شيء ما على الخادم. المكونات غير الواضحة: تحقق من NetPack - قم بتشغيل نموذج المشروع وانتقل إلى مثال / BrowserReload: https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web/Views/Home/BrowserReload.cshtml - ذلك قد تساعدك. إذا لم يكن الأمر كذلك ، فهناك حلول أخرى لتشغيل إعادة تحميل صفحة جانب العميل استنادًا إلى تغييرات ملف جانب الخادم إذا كنت لا تستطيع الانتظار حتى يتم حل المشكلة.

شكرًا على الحل ، قد يكون مفيدًا بالفعل لشخص آخر. بالنسبة لي سيكون مجرد تحسين جودة الحياة ، لا شيء حاسم. ما زلت أحب المنتج والجهد الذي يبذله الجميع. الضغط الإضافي على Ctrl Shift B يعمل معي (الآن).

يبدو الحل حاليًا كما يلي:
لديّ exe BlazorDebugLauncher منفصل والذي يبدأ من خلال launchsettings.json معلمات مع المنفذ واسم المضيف الذي سيتم فتح المتصفح.
بعد ذلك

  • يبدأ ملف exe صغير منفصل DebugAttacher والذي يقوم بفصل Visual studio وإعادة توصيله
  • يبدأ تشغيل dotnet watch على مجلد المشروع
  • يقوم بتحديث المتصفح بمجرد تشغيل عملية الخادم (يعمل بشكل جيد مع MS Edge :-))

إذا كان أي شخص مهتمًا ، يمكنني وضع هذا في مكان ما ...

AdmiralSnyder متأكد من أنني سأكون مهتمًا برؤية ذلك إذا كنت ترغب في المشاركة!

هذا هو الحل الخاص بي. قليل الاختراق ، لكنه يعمل: https://github.com/AdmiralSnyder/BlazorAutoRebuildDemo
(سأقوم بالتنظيف وإضافة الملف التمهيدي الأسبوع المقبل ...)

dazinator هل حدث أن

AdmiralSnyder لقد
لقد استقرت على هذا النهج لإعادة تحميل المتصفح رغم ذلك (إنها مكتبتي الخاصة بشكل غير مفاجئ) https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web.Blazor.Host/Startup.cs - الذي يعمل المراقب داخل التطبيق نفسه (باستخدام IFileProvider) بدلاً من تشغيل أي عمليات خارجية ، ويقوم بإعادة التحميل باستخدام إشارة r ومكون جانب عميل blazor الذي تضيفه إلى تخطيط Blazor الخاص بك. لقد كان يعمل جيدًا بالنسبة لي في المعاينة 6 وسأقوم قريبًا بالترقية إلى preview7 وآمل أن يستمر في العمل :-)

لم أرغب في إدخال ميزات التحديث في المشروع. كيف تفتح فجوة الفصل-إعادة البناء-إعادة التشغيل-إعادة التوصيل دون الحاجة إلى عملية خارجية؟

لم أرغب في إدخال ميزات التحديث في المشروع

ليس عليك إدخالهم في المشروع بالمعنى الدقيق للكلمة. على سبيل المثال ، يمكنك تضمين مراجع الحزمة بشرط على رمز تجميع (أي تصحيح الأخطاء = صحيح) ويمكنك وضع رمز بدء التشغيل في توجيه تجميع (#if debug) - والآن عند تشغيل التطبيق في وضع الإصدار ، لن تتمكن من ذلك لديك حزم وقت التصميم أو الرمز فيه.

كيف تفتح فجوة الفصل-إعادة البناء-إعادة التشغيل-إعادة التوصيل دون الحاجة إلى عملية خارجية؟

نظرًا لأنني أقوم بتشغيل المشروع المضيف من VS ، فيمكنه إعادة بناء مشروع عميل blazor المشار إليه حسب الحاجة (يراقب netpack مشاريع blazor IFileProvider) دون الحاجة إلى التوقف أو الانفصال عن العملية المضيفة. المرة الوحيدة التي توجد فيها "فجوة" هي إذا كنت بحاجة إلى إجراء تغيير رمز لتطبيق المضيف نفسه (وليس عميل Blazor). في هذه الحالة - آمل بشدة أن يعمل "التحرير والمتابعة" في يوم من الأيام مرة أخرى لأن ذلك سيحل هذه المشكلة الأخيرة. لكن بدون ذلك ، هناك خياران لمقاربتي:

  1. لا تستخدم VS لتشغيل المضيف ، استخدم dotnet run watch ثم أرفق مصحح الأخطاء يدويًا (مؤلم)
  2. أوقف VS ، قم بإجراء التغيير على المضيف ، ابدأ Vs مرة أخرى (هذا عادة ما أفعله)
    AdmiralSnyder قام بتعديل هذا

أرى ~ 10 ثوانٍ لإعادة البناء باستخدام dotnet watch . هل هناك أي خطط لتسريع الإنشاءات الإضافية؟ هذا مؤلم إلى حد ما عند التكرار على المكونات.

يبدو أنه يتم قضاء الكثير من الوقت في بناء مكونات ماكينة الحلاقة ، فهل هذا يعني أن أوقات البناء هذه ستتوسع بشكل خطي؟ (مع تطبيقات أكثر تعقيدًا يستغرق إنشائها أكثر من 30 ثانية؟)

هل هناك أي خطط لتسريع الإنشاءات الإضافية؟ هذا مؤلم إلى حد ما عند التكرار على المكونات.

إذا كان هذا هو Blazor من جانب العميل ، ففكر في تعطيل الارتباط لإصدارات Debug.

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
  </PropertyGroup>

لقد تحدثت إلى عدد قليل من الأشخاص الذين يشعرون بالارتباك بشأن إعادة البناء التلقائي والتحديث التلقائي.
هذا يرجع أساسًا إلى حقيقة أنه عند تغيير الرمز في Visual Studio ، تبدأ ميزة إعادة البناء التلقائي ، كما ترى أن "شيئًا ما" يحدث في المتصفح. غالبًا ما يُخطئ هذا الشيء باعتباره محاولة إعادة تحميل مباشرة.
ثم (نظرًا لحقيقة أن اتصال إشارة r لا يمكن إعادة الاتصال بالحالة القديمة) تحصل على "فشل إعادة الاتصال بالخادم." خطأ. ومع ذلك ، بالنسبة للأشخاص الجدد في Blazor ، يبدو أن النظام قد جرب التحديث التلقائي ، إلا أنه فشل في القيام بذلك وهي تجربة سيئة.

نظرًا لعدم وجود ETA على ميزة Live Reload ، فهل من الممكن عدم محاولة إعادة الاتصال التلقائي إذا انقطع الاتصال بسبب أحد الإنشاءات؟ أو على الأقل إعطاء رسالة خطأ أفضل ، فبدلاً من "فشل إعادة الاتصال بالخادم" شيء مثل "تحديث المتصفح"؟

@ chucker شكرًا على نصيحة رابط التعطيل. يؤدي ذلك إلى زيادة عملية الإنشاء بشكل هامشي ، ولكن إعادة تحميل المتصفح اللاحقة تكون أبطأ كثيرًا حيث يتم تنزيل المزيد من القشر الآن - لست متأكدًا مما إذا كان قد ساعد بشكل عام أم لا :-) ولكن الأمر يستحق المعرفة.
إذا كان أي شخص مهتمًا برؤية إعادة تحميل Blazor أثناء العمل (لمشاريع Blazor client / wasm) ، فيمكنك تشغيل هذا المشروع هنا لمعرفة ما أعنيه: https://github.com/dazinator/NetPack/blob/develop/src/NetPack .Web.Blazor.Host / Startup.cs

Postlagerkarte نحن نحاول إعادة الاتصال ، ولكن نظرًا لأن حالة الخادم قد اختفت عند إعادة تدوير العملية ، تفشل إعادة الاتصال. لقد قمنا ببعض العمل في هذا المجال لمحاولة تحسين تجربة المستخدم. راجع قسم "منطق إعادة الاتصال المحسّن لتطبيقات Blazor Server" في منشور مدونة إعلان Preview 8 .

قامPostlagerkarte بتحسين رسالة الخطأ هذه في المعاينة 8

اعتمادًا على الأفق / المخطط الزمني لإعادة التحميل المباشر ، هل يستحق النظر في مشكلة منفصلة لتحسين سرعة الترجمة؟ ربما عبر إستراتيجية التخزين المؤقت المشابهة لكيفية عمل MVC / cshtml (أعتقد أن المشاهدات التي تغيرت فقط هي التي يتم إعادة تجميعها)؟ هل هناك أي فاكهة منخفضة معلقة محتملة هنا؟

في الوقت الحالي ، تعد مدة الدورة التي تستغرق 10 ثوانٍ بين إجراء تغيير ورؤيته في المتصفح مشكلة كبيرة حقًا ، وهي أكبر بكثير من الأنظمة الأساسية القائمة على webpack في نطاق تطبيق مماثل. ولكي أكون واضحًا ، أنا أتحدث فقط عن Blazor من جانب الخادم هنا.

هل يستحق النظر في مسألة منفصلة لتحسين سرعة الترجمة؟

نعم ، إذا كنت ترى أوقات إنشاء بطيئة ، فيرجى تقديم مشكلة في تفاصيل بيئة الإنشاء.

إن الاضطرار إلى إعادة تحميل تطبيق عميل blazor بالكامل (إعادة تنزيل كافة ملفات dll) عند إجراء تغيير "html فقط" على أحد المكونات (على سبيل المثال ، تغيير بعض محتوى html الثابت) ليس بالأمر الأمثل.

هل لدى الفريق أي شيء لتتبع التحسينات على تلك التجربة أم ينبغي فتح مشكلة جديدة؟

dazinator ليس واضحًا تمامًا من عنوان الإصدار ، لكننا نستخدم هذه المشكلة لتتبع استبدال الوحدة الساخنة بالإضافة إلى إعادة التحميل المباشر. لدينا مجموعة من الاستثمارات التي نخطط للقيام بها في الإطار الزمني .NET 5 في هذا المجال.

أنا شخصياً لا أمانع في ضرب F5 ، وبالتالي لا أفكر في إعادة تحميل ميزة أفضل بريو ،
ومع ذلك ، للوصول إلى التدفق ، أجد أنه من الأهمية بمكان أن يكون ملف
تغيير الكود ، f5 ، تغيير الكود ، f5 ، تغيير سير عمل الكود سريع (قصد التورية). يرجى العمل على ذلك أولاً :)

لقد قمنا بتمكين هذا لمشاريع Blazor من جانب الخادم ، لكننا بحاجة إلى القيام ببعض الأعمال لتمكين هذا مرة أخرى لمشاريع Blazor من جانب العميل ومكتبات فئة Razor. من المحتمل أن يمر قليل قبل أن نصل إلى هذا لأننا نركز الآن على شحن .NET Core 3.0.

مما تمكنت من جمعه من العديد من مشكلات GitHub هو أن إعادة التحميل المباشر تعمل فقط على جانب الخادم Blazor الذي يتم تشغيله دون تصحيح الأخطاء (ويجب على المطور فرض تحديث الصفحة). هل هذا صحيح؟ لم أتمكن من العثور على أي وثائق نهائية حول هذا الموضوع.

ما لدينا الآن هو دعم إعادة البناء التلقائي لمشاريع ASP.NET Core ، حيث ستراقب VS نظام الملفات من أجل التغييرات ثم تعيد بناء المشروع تلقائيًا وإعادة تشغيله. إنه يعمل فقط عندما لا يكون مصحح الأخطاء مرفقًا وللملفات الموجودة في المشروع الحالي (لا تتم مشاهدة المشاريع التابعة).

هل من الممكن تعطيل محاولة إعادة الاتصال التلقائي إذا كان سبب فقدان الاتصال هو إنشاء؟ أو ربما تعطيل إعادة الاتصال التلقائي على الإطلاق أثناء التطوير؟ أريد فقط التخلص من محاولات إعادة الاتصال الفاشلة لأنها تزعجني وأضغط على F5 على أي حال :)

لذلك يجب أن يكون من السهل جدًا فصل VS وإعادة توصيله تلقائيًا ، أليس كذلك؟

هل يمكنني الحصول على الحل النهائي لإعادة التحميل المباشر لتطبيقات Blazor Server مع تصحيح الأخطاء؟

@ bansalankit2601 يتم تنفيذه في .NET 5.0

أقوم بتشغيل المراقب كـ dotnet watch run وأستخدم VS لتحرير الكود. عندما أقوم بالحفظ ، تتم إعادة ترجمة الشفرة ويغلق المتصفح ، ويخبرني أنه يجب إعادة التحميل.

لقد سئمت من الضغط على F5 وأفضل البقاء في VS أثناء تعديل الأشياء ، لذلك يقوم TamperMonkey بالإنقاذ:

"" // == UserScript ==
// name إعادة تحميل الصفحة
// namespace http://tampermonkey.net/
// @ الإصدار 0.1
// description حاول السيطرة على العالم!
// author أنت
// match http: // localhost : 5000 / *
// @ grant لا شيء
// == / UserScript ==

const reloader = () => {
    if (document.body.innerText.indexOf("Reload the page") >= 0) document.location = document.location;
    else setTimeout(reloader, 300);
}
console.log('Blazor reloader installed');
setTimeout(reloader, 300);

""
السماح بتشغيل البرنامج النصي على http: // localhost : 5000 / *

يعمل هذا على جانب الخادم: https://github.com/martasp/BlazorLiveReload

يقوم العميل باختبار اتصال الخادم كل 200 مللي ثانية. عندما يتعطل الخادم بسبب إعادة التحويل البرمجي من dotnet watch run ، يتم تبديل العلامة ، وعندما يعود الخادم ، يتم تلقائيًا F5s.

لم يعمل الريبو بالنسبة لي ، لكنني فتحت مشكلة مع بعض جافا سكريبت الذي يعمل (على الأقل بالنسبة لي في الإصدار 3.0)

ما هي حالة "إعادة التحميل المباشر" في الوقت الحالي. هل هو مدعوم (بدون F5 في المتصفح)؟
إذا لم يكن كذلك ، فهل هناك أي خطط لإصدار هذه الميزة؟

moemar في أحدث موقف مجتمعي يقول David Fowler أن هناك خططًا لذلك ربما للإصدار التالي ولكن لم يتم وضع أي شيء بعد. https://youtu.be/bBc_NTUVtbE؟list=PL1rZQsJPBU2St9-Mz1Kaa7rofciyrwWVx&t=5010

ما هو آخر ما في هذا؟ 2.5 شهر منذ آخر تحديث ...

أنا أيضا في انتظار نفس الشيء.

هذا مخطط لـ .NET 5 ، المقرر في نوفمبر 2020. ما زلنا نجري الكثير من المناقشات حول النهج الذي نريد اتباعه هنا.

لBlazor جانب الخادم، ماذا عن استخدام الآلية التي الارتباطات مقبض:

قدم dharmaturtle حلاً يجلب الخادم كل

إذا تجاوزت Blazor.defaultReconnectionHandler._reconnectionDisplay من عميل javascript blazor ، فيمكنك قطع الاتصال والبدء في جلب الخادم والانتظار حتى يصبح مباشرًا مرة أخرى.

الميزة هي أن لديك طلبات فقط عند قطع اتصال الخادم.

العيب هو أن "_reconnectionDisplay" هو عضو خاص وأنت تعلم ... هذا شر.

كتخفيف ، قم بإرفاق كود جافا سكريبت في <environment include="Development"> . لن ينزف في خادم الإنتاج.

الريبو الكامل هنا.

لقد تحولت للتو إلى هذا الحل منذ بضع دقائق: https://remibou.github.io/Make-your-Blazor-development-faster/

لا يقوم باختبار اتصال الخادم باستمرار ، ولا يعيد ترجمة ملف .sln بالكامل إذا كان التغيير في ملف .html أو .css أو .js ؛ إنه يعيد تحميل الصفحة فقط ، وهو أمر رائع.

مجرد ربط مثال آخر هنا يختلف قليلاً عن الأساليب المذكورة أعلاه. فقط قم بتشغيل المشروع - لا يتطلب مشاهدة dotnet على مشروع wasm العميل. ستتم إعادة التحميل على الفور إذا قمت بتغيير أي ملف css أو html أو js في مجلد wwwroot من العميل wasm. سيتم إعادة بنائه ثم إعادة تحميله ، إذا قمت بتغيير أي كود في مشروع wasm العميل مثل ملف موس وما إلى ذلك. يمكنك التحكم في هذا في startup.cs الخاص بك وهذا هو سبب اختلاف هذا قليلاً عن الحلول الأخرى. إذا كنت لا تزال تستخدم جافا سكريبت أو ملفات ثابتة أخرى يجب معالجتها مسبقًا في مشروعك ، فيمكنك أيضًا العثور على أمثلة أخرى في نفس الريبو والتي قد تكون مفيدة ، مثل SystemJS HMR و rollup وما إلى ذلك.

https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web.Blazor.Host/Startup.cs

أنشأ مكتبة تجمع مكونات ماكينة الحلاقة في وقت التشغيل.

LivePreview

في رد الفعل لدينا استبدال ساخن للوحدة ، تتيح لنا هذه الميزة تغيير الكود ورؤية التغييرات على الفور في متصفحك. يمكننا عمل ميزة مماثلة في Blazor باستخدام مترجم Roslyn. تجميع مكونات ماكينة الحلاقة في وقت التشغيل والعمل مع WebSockets في كل تغيير ملف باستخدام مراقب الملفات.

كيف تعمل

يستخدم الإصدار 3 من محرك الحلاقة لتجميع المكونات لفئات c #. ثم باستخدام مترجم Roslyn قمت بتجميع هذه الفئات للتجميع. أخيرًا ، قمت بتحميل مكون app.razor من تجميع مع انعكاس ومع مكتبة مضيف Steve Sanderson Test المعدلة ، قمت بتحويل المكون إلى HTML عادي. لخدمة ملفات HTML في الوقت الفعلي ، استخدمت WebSockets للحصول على اتصال مزدوج الاتجاه.

كيف يمكن أن يكون أفضل

إصلاح المسارات بدلاً من استخدام / معاينة ، يمكن تنفيذ ذلك عن طريق حقن عميل WebSocket في كل سياق طلب HTTP.

في تجميع الويب Blazor ، ربما يمكننا تحميل التجميعات وتفريغها في المتصفح؟

استخدام اثنين من خوادم البناء ، أحدهما للمعاينة السريعة وخادم آخر مع dotnet watch build للبنى الحقيقية الأطول.

في تجميع الويب Blazor ، ربما يمكننا تحميل التجميعات وتفريغها في المتصفح؟

المصدر: https://github.com/martasp/BlazorLiveReload

تضمين التغريدة

في تجميع الويب Blazor ، ربما يمكننا تحميل التجميعات وتفريغها في المتصفح؟

إنه إصدار من وقت التشغيل الأحادي الذي ينفذ تطبيقات blazor wasm ، ولكن لسوء الحظ لا يمكنك إنشاء AppDomains جديدة (على حد علمي) ولا يمكنك إلغاء تحميل التجميعات من AppDomain الافتراضي.

يمكنك تحميل التجميعات البطيئة ، وهي الطريقة التي أحمل بها حاليًا تجميعات المكونات ديناميكيًا فقط عند الاستخدام الأول (لتسريع وقت تحميل التطبيق الأولي) ، ولكن بمجرد تحميلها ، فإن الطريقة الوحيدة لتحميل إصدار جديد يمكنني رؤيته هي ربما لتحميل إصدار جديد من نفس التجميع في نفس AppDomain وتبديل جميع الإشارات إلى ذلك الإصدار الجديد - ترك الإصدار القديم هناك - لست متأكدًا مما إذا كان ذلك مدعومًا لأنني لم أجربه بعد. إذا كنت تفعل في الطرق ؛ دعني اعرف!

آمل أن نحصل يومًا ما على تشغيل وقت تشغيل .net الأساسي في المتصفح بدلاً من دعمه لـ AssemblyLoadContexts و Assembly.Unload ()

مرحبًا @ danroth27 ،
هل رأيت https://www.livesharp.net/؟
يستبدل الكود أثناء تشغيله .

يوجد عرض حيث يقوم بتحديث Blazor on-the-fly (على الرغم من أن المرء يحتاج إلى التنقل بعيدًا والعودة إلى المسار الحالي).
وأيضًا واجهة عرض يتم فيها نص إخراج وحدة التحكم في حلقة _ أثناء تشغيله_ !

هذا قريب جدًا من التجربة التي أرغب فيها!

@ warappa هذا رائع. أتساءل كيف يعمل! يمكنني التفكير في عدد قليل من الآليات الممكنة التي تحل محل الطرق مع وكلاء ديناميكي.
ومع ذلك ، فإنه يعمل ، تنويه للمطور / s. أود أيضًا تجربة مثل هذه ولكن يفضل بدون خادم مطور منفصل ، أفضل النقر فوق تشغيل في VS.

يقومdazinator LiveSharp Server بتسلسل التعليمات البرمجية المحدثة وإرسالها إلى التطبيق. ثم يقوم التطبيق بإلغاء تسلسلها في Expression Tree ويحقنها في الأساليب المحدثة. هناك الكثير مما يجري في الداخل ، ولكن هذا هو جوهر الأمر.

بالمناسبة ، يجب تشغيل LiveSharp Server مرة واحدة فقط. بعد ذلك ، ما عليك سوى بدء تشغيل التطبيق كما تفعل عادةً.

في ما يلي عرض توضيحي لإعادة التحميل السريع من Blazor مع LiveSharp: https://www.youtube.com/watch؟v=MCh5-44UBpM

إخلاء المسؤولية: أنا مؤلف LiveSharp

ionoy مجد هذا بعض العمل الجميل هناك!

تجربة تطوير Blazor حتى الآن مؤلمة للغاية. تحرير ، إعادة بناء ، تحديث ، تصحيح ...
يسعدني أن تدفع 9 دولارات شهريًا حتى يتم إصلاح ذلك ، من شأنه أن يعزز الإنتاجية على الأقل 5x

عند تصميم هذا ، يرجى مراعاة أنه لا نستخدم جميعًا الاستوديو المرئي. شكر

wocar LiveSharp عبارة عن منصة مشتركة بالفعل ولا تعتمد على أي IDE. لذلك يمكنك استخدامه نظريًا مع notepad.exe

wocar إذا كنت لا تستخدم VS ، ففكر أيضًا في dotnet watch : https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch

SteveSandersonMS - dotnet watch يقتل الدولة ، كما تعلمون بلا شك. يدفع LiveSharp التغييرات فعليًا دون فرض إعادة تحميل ، وبالتالي يسمح بضبط واجهة المستخدم بدقة من خلال حلقة ردود الفعل الفورية. أتمنى حقًا أن تنفذوا شيئًا مكافئًا قريبًا ، هناك حاجة ماسة إليه.

نعم طبعا. لم أكن أقترح أنه نفس LiveSharp. فقط تأكد من أن wocar كان على علم بالخيار.

شكر. تم تنزيل Livesharp بالفعل ويعمل بشكل جيد للغاية ، وأود أن ترى شيئًا كهذا مطبقًا.

لا تفهموني خطأ ، لقد قمت يا رفاق بعمل رائع ، ولكن إذا كنت تريد ملاحظات صادقة ، فإن تصحيح الأخطاء يعد أمرًا مؤلمًا. لقد استخدمت ساعة dotnet وهي تعمل نوعًا ما (إنها بطيئة) ولا يمكنني تصحيح الأخطاء (على الأقل ليس مع Rider) بقدر ما أرغب في استخدام Blazor لا يمكنني ذلك بسبب productivit. لذلك قررت أن ألتزم بصفحات الحلاقة بدلاً من ذلك.

شكرا لك.

شكرا لملاحظاتك ،wocar! أعلم أن إعادة التحميل الساخن مهمة. إنه شيء نريد أن نضيفه بشدة ، ونبحث عن طرق يمكن من خلالها إحضاره إلى .NET 5 بشكل عام.

لا يمكنني التصحيح (على الأقل ليس مع Rider)

قد تكون على دراية بالفعل ، ولكن في حالة عدم حدوث ذلك ، من الممكن تصحيح الأخطاء بطريقة مستقلة عن IDE باستخدام المتصفح كمصحح أخطاء .NET: https://docs.microsoft.com/en-us/aspnet/core /blazor/debug؟view=aspnetcore-3.1#debug -in-the-browser

قد تكون على دراية بالفعل ، ولكن في حالة عدم حدوث ذلك ، من الممكن تصحيح الأخطاء بطريقة مستقلة عن IDE باستخدام المتصفح كمصحح أخطاء .NET: https://docs.microsoft.com/en-us/aspnet/core /blazor/debug؟view=aspnetcore-3.1#debug -in-the-browser

شكرا لم تكن على علم.

إذا كنت أستخدم صفحات موس الحلاقة (.cshtml) وقمت بتعديل HTML واضغط على F5 على الأقل يمكنني رؤية التغييرات. لماذا هذا غير ممكن مع مكونات Razor (.razor)

أرغب في الحصول على دورة تطوير أسرع أيضًا. بمجرد إعادة التحميل السريع للعمل مع Vue ، كان من الجيد جدًا إجراء تغيير ورؤيته بعد 1.0-2.0 ثانية في المتصفح. الآن أرى الحاجة لشيء كهذا هنا.

يجعلنا dotnet watch run جزءًا من الطريق هنا - هل ستكون هناك إجابة وسيطة أبسط ، وربما طريقة ما لتسريع الإنشاء بحيث يكون أسرع عندما لا يتغير شيء سوى ملف .razor؟ لن يتجنب ذلك الحاجة إلى إعادة تشغيل مضيف الويب وإعادة تحميل الصفحة ، كما قال dbulic أعلاه ، ولكن الاضطرار إلى الانتظار لمدة ثانية واحدة بدلاً من 20 ثانية للإصدار سيكون كبيرًا.

هل هناك أي خطط لمعالجة هذا من خلال وجود نوع من "تجميع وقت التشغيل" لملفات .razor التي يتم تشغيلها في المستعرض ، على غرار تجميع وقت التشغيل لملفات .cshtml المتوفرة على الخادم؟ على سبيل المثال ، يتم تحميل ملفات .razor نفسها مباشرةً في المتصفح (بدلاً من التجميعات المترجمة مسبقًا) ثم تجميعها هناك ، ثم إذا تم تحريرها على الخادم ، يمكن إعادة تحميل ملف .razor المتغير في المتصفح وإعادة تجميعه هناك؟ أنا أحب أوجه التشابه هنا مع cshtml وتساءلت عما إذا كان هذا هو المسار على الإطلاق؟

هذا مخطط لـ .NET 5 ، المقرر في نوفمبر 2020. ما زلنا نجري الكثير من المناقشات حول النهج الذي نريد اتباعه هنا.

مرحبًا @ danroth27 ، هل تم تشكيل اتجاه؟ إذا لم يكن هناك شيء لمشاركته حتى الآن ، فربما نرى شيئًا ما في Build 2020؟

مرحباmrlife. نتوقع أن نركز بشكل أساسي على إصدار Blazor WebAssembly في BUILD. دعم إعادة التحميل السريع هو شيء نتوقع أن ننظر إليه في .NET 5. لم يتم بعد تحديد الاتجاه المحدد لكيفية تحقيق ذلك.

أفكر في هذه المسألة كثيرا. كل يوم ، أستخدم النمط 1. النموذج 2 هو تغيير نموذجي في الممارسة مقارنة بالنمط 1 ؛ هذا يجعل اعتماده أقل سهولة مقارنة بتحسين النمط 1 مباشرة. آمل أن يكون النموذج 3 قريبًا مما يمكن تحقيقه. أشعر أن النموذج 4 طموح فقط بناءً على التعليقات أعلاه ، ومع ذلك ، بعد رؤية ما هو ممكن في MAUI ، يبدو النموذج 6 جيدًا حقًا.

النمط 1 (خارج الصندوق الحالي):

  1. احفظ التغييرات على أي عدد من الملفات
  2. انقر فوق زر أو اضغط على أمر لوحة المفاتيح للترجمة
  3. قم بتحديث المتصفح

النمط 2 ( dotnet watch run ):

  1. احفظ التغييرات في ملف واحد
  2. إعادة التحويل التلقائي
  3. احفظ أي ملفات أخرى مطلوبة وانتظر عمليات إعادة تجميع إضافية
  4. قم بتحديث المتصفح

النمط 3:

  1. احفظ التغييرات على أي عدد من الملفات
  2. مطلوب إعادة تجميع جزئي أو لا
  3. قم بتحديث المتصفح

النمط 4:

  1. احفظ التغييرات على أي عدد من الملفات
  2. يعكس المستعرض التغييرات في حالته الحالية

النمط 5 (مثل إعادة تحميل MAUI الساخن ):

  1. لا تحفظ التغييرات على ملف
  2. يعكس المستعرض التغييرات في حالته الحالية

ما الذي يمكن تحقيقه؟

نمطي الحالي مع dotnet watch run :

  1. احفظ التغييرات على جميع الملفات باستخدام Ctrl Shift S.
  2. إعادة التحويل التلقائي
  3. تحديث المتصفح التلقائي الموصوفة هنا .

هل هذه المشكلة تتبع الإنشاء / إعادة التحميل السريع لكل من Blazer Server و Web Assembly ، أم أن هناك واحدة منفصلة لتجميع الويب؟

ما هو الوضع على هذا؟ تستخدم حاليًا https://github.com/OYIon/LiveSharp

هذا كله غير مريح للغاية. لا يمكنني أيضًا الحصول على حل بديل لساعة dotnet للعمل من مشروع
إنه حاليًا ألم في * * للعمل مع Blazor من وجهة نظري. لا يوجد تحديث مباشر ، يتم تمييز الأشياء باستمرار باللون الأحمر ويعمل التحسس بشكل متواضع للغاية.

التكنولوجيا العظيمة تحتاج أيضًا إلى أدوات رائعة!

يتم تمييز الأشياء باستمرار باللون الأحمر ويعمل التحسس بشكل متواضع جدًا.

نفس الشيء هنا ، الحل الخاص بي:

  • اقتل devenv.exe
  • إزالة .vs \ المجلد
  • أعد تشغيل المشروع

ستعمل الأدوات مرة أخرى. افعل هذا عدة مرات في اليوم. مع إعادة الهيكلة ، مرتين في الساعة. حاول دمجها مع رحلتك إلى آلة القهوة

يتم تمييز الأشياء باستمرار باللون الأحمر ويعمل التحسس بشكل متواضع جدًا.

أعلم أن هذا صعب ، لكن هل لديك أي خطوات إعادة بروز لهذا؟ على سبيل المثال ، هل لديك بعض كود المشروع الذي يمكنك مشاركته والذي ينتج بشكل موثوق ، في إصدار معين من VS أو VS Code ، معلومات غير صحيحة أو أخطاء؟ نريد بالتأكيد تعقب أي مشكلات من هذا القبيل وإصلاحها.

ccNTaylorMullen - هل تعرف أي خطوات تشخيصية يمكن اتخاذها هنا لمساعدتنا في تعقب ذلك؟

تضمين التغريدة

سهل:

  • إعادة تسمية ملف مكون ماكينة حلاقة موجود

image
(ستتم أيضًا إعادة تسمية الملفات التي لها نفس البادئة)

image

  • تحديث اسم الفئة في الفصل الجزئي

  • تحديث / إعادة تسمية المراجع في المكونات الأخرى (يدوي ، ميزة الأدوات المفقودة للغاية)

  • أعمال البناء

  • الأدوات مكسورة

image

  • بعد حذف المجلد .\vs مقابل الاسترداد

يتم تمييز الأشياء باستمرار باللون الأحمر ويعمل التحسس بشكل متواضع جدًا.

أعلم أن هذا صعب ، لكن هل لديك أي خطوات إعادة بروز لهذا؟ على سبيل المثال ، هل لديك بعض كود المشروع الذي يمكنك مشاركته والذي ينتج بشكل موثوق ، في إصدار معين من VS أو VS Code ، معلومات غير صحيحة أو أخطاء؟ نريد بالتأكيد تعقب أي مشكلات من هذا القبيل وإصلاحها.

ccNTaylorMullen - هل تعرف أي خطوات تشخيصية يمكن اتخاذها هنا لمساعدتنا في تعقب ذلك؟

شكرا على الرد ، وسوف أراقب ذلك. كل نوع من إعادة الهيكلة يمثل مشكلة بالتأكيد كما قدم JvanderStad بالفعل كمثال. وإلا لم أستطع رؤية أي نمط حتى الآن.
على سبيل المثال ، فتحت للتو ملفًا يبلغ 219 سطرًا وحصلت على 167 خطأ تحسس. القواعد: CS0121 CS0229 CS1503

هل قد يكون من المفيد إنشاء إصدار github إضافي لجمع مشاكل intellisense؟ أم أن هذا موجود بالفعل؟ لأن هذه القضية هي بالتأكيد المكان الخطأ.

شكرا على الرد ، وسوف أراقب ذلك. كل نوع من إعادة الهيكلة يمثل مشكلة بالتأكيد كما قدم JvanderStad بالفعل كمثال. وإلا لم أستطع رؤية أي نمط حتى الآن.
على سبيل المثال ، فتحت للتو ملفًا يبلغ 219 سطرًا وحصلت على 167 خطأ تحسس. القواعد: CS0121 CS0229 CS1503

هل قد يكون من المفيد إنشاء إصدار github إضافي لجمع مشاكل intellisense؟ أم أن هذا موجود بالفعل؟ لأن هذه القضية هي بالتأكيد المكان الخطأ.

يكاد يكون في حالة تلف db intellisense / تعطل خدمة اللغة ، فإنه يستمر بعد إعادة تشغيل VS

  <entry>
    <record>1268</record>
    <time>2020/07/08 14:35:36.779</time>
    <type>Error</type>
    <source>Editor or Editor Extension</source>
    <description>System.TimeoutException: The operation has timed out.&#x000D;&#x000A;   at Microsoft.WebTools.Languages.Html.VS.ContainedLanguage.Server.DotNetCoreServerContainedLanguageSupport.OnIdle(Object sender, EventArgs e)</description>
  </entry>

أنا أستخدم rider بدلاً من vs ويبدو أنه يعمل بشكل جيد للغاية. كما أنني أستخدم هذه الأداة المسماة lifetime ، رغم أنها ليست جيدة أو موثوقة ، إلا أنها تنجز المهمة ويمكنني الحصول على تحديثات واجهة المستخدم دون الحاجة إلى إعادة الترجمة.

@ cubed-it يقتل هذا PowerShell Visual Studio ويزيل مجلد .vs \ ويعيد تشغيل الحل. تتطلب رحلات قهوة أقل.

$start = New-Object Collections.Generic.List[string]

Write-Host "Looking for Visual Studio"  -BackgroundColor DarkGreen
$devenvs = Get-CimInstance Win32_Process -Filter "name = 'devenv.exe'" | Select-Object CommandLine, ProcessId

foreach ($devenv in $devenvs) {

    Write-Host $devenv

    $index = $devenv.CommandLine.IndexOf("devenv.exe`" `"")
    if ($index -eq -1)
    {
        Write-Host "No params"  -BackgroundColor DarkRed
        continue
    }

    $param = $devenv.CommandLine.Substring($index + 12).Trim()
    $project = $param.Trim('"')
    if ($project.Length -eq 0)
    {
        continue
    }

    #allowed project files
    $slnTypes = New-Object System.Collections.Generic.HashSet[string]
    [void]$slnTypes.Add(".sln")
    [void]$slnTypes.Add(".slnf")

    #
    Write-Host "Project: $project"

    $extension = [System.IO.Path]::GetExtension($project)
    if (-not $slnTypes.Contains($extension))
    {
        Write-Host "No solution" -BackgroundColor DarkRed
        continue;
    }


    $vsFolder = [System.IO.Path]::GetDirectoryName($project)
    $vsFolder = "$vsFolder\.vs\"

    if ([System.IO.Directory]::Exists($vsFolder) -eq $false)
    {
        Write-Host ".vs\ folder does not exist" -BackgroundColor DarkRed
        continue
    }

    #we will restart later
    [void]$start.Add($devenv.CommandLine)

    #kill visual studio
    Write-Host "Kill: $devenv" -BackgroundColor DarkGreen
    Stop-Process -id $devenv.ProcessId -Force

    #remove devenv folder
    Write-Host "Removing: $vsFolder" -BackgroundColor DarkGreen
    Remove-Item -Recurse -Force $vsFolder
}


foreach ($devenv in $start) {

    $program =  $devenv.Substring(0, $index + 11)
    $arguments =  $devenv.Substring($index + 12)

    Write-Host "Starting: '$program'"  -BackgroundColor DarkGreen
    Write-Host "Arguments: '$arguments'"  -BackgroundColor DarkGreen

    Start-Process -FilePath $program -ArgumentList $arguments
}

بالنسبة لأولئك الذين يريدون التمسك بـ VS ، يمكنك استخدام هذا الامتداد للعمل حول ( https://marketplace.visualstudio.com/items؟itemName=pragmatrix.BuildOnSave ) الذي يبني تلقائيًا على الحفظ ويمكن فقط تمكينه لبدء مشروع (هذه الحالة مشروع Blazor الخاص بك). للحصول على تجربة أفضل ، قم بإيقاف تشغيل "متصفح الغداء" في VS بحيث لا يغلق المتصفح تلقائيًا. لكن عليك أن تضغط على F5 في المتصفح :-(

تشعر تمامًا بكل ألمك فيما يتعلق بأدوات الحلاقة. لحسن الحظ ، إنه شيء نتطلع إلى معالجته في الإطار الزمني لـ .NET 5. إذا كنت ترغب في تجربة هذه الأدوات (تحذير أنها تجريبية للغاية حاليًا) ، يمكنك تنزيل أحدث إصدار لمعاينة VS وتحقق من خانة اختيار ميزة المعاينة التالية (أدوات -> خيارات -> بيئة -> ميزات المعاينة):

image

من المحتمل جدًا أن يحل هذا العديد من مشكلات محرر Razor المذكورة في هذه المشكلة. ومع ذلك ، نعلم أننا نعلم أن المحرر الجديد به العديد من الثغرات وحتى بعض الأخطاء السيئة عند مقارنته بالمحرر الحالي ، لكننا نشعر بالفضول لسماع تعليقاتك بغض النظر عما إذا كانت تجربة أفضل بشكل عام لاحتياجاتك.

تنزيل أحدث إصدار معاينة VS
https://visualstudio.microsoft.com/vs/preview/

NTaylorMullen هل هناك مشكلة حيث يمكنني تسجيل الأخطاء المتعلقة

image

JvanderStad أعتقد أن بناء الجملة يجب أن يكون "@(row => ...

JvanderStad أعتقد أن بناء الجملة يجب أن يكون "@(row => ...

يعمل بشكل جيد في الإصدار الحالي

image

JvanderStad آه ، إذا كنت تتحدث عن الألوان ، فهذا مكسور حاليًا ، وكذلك العديد من الأشياء الأخرى

https://devblogs.microsoft.com/aspnet/new-experimental-razor-editor-for-visual-studio/

فاتني مدونة دانيلز. أعرف الآن ماذا أتوقع. ثنك

NTaylorMullen هل هناك مشكلة حيث يمكنني تسجيل الأخطاء المتعلقة

إن التلوين الدلالي Ya C # هو شيء لم نقم بتنفيذه بعد في المحرر الجديد 😄

@ danroth27 إذا كان إعادة التحميل الساخن لـ blazor wasm أمرًا صعبًا بسبب الهندسة المعمارية ، فهل تعتقد أن إعادة التحميل السريع لخادم Blazor يمكن أن يؤدي المهمة. الفكرة هي تقديم مكونات ماكينة الحلاقة بسلاسة (من مشروع Blazor wasm) عبر عارض الخادم أثناء التطوير مع الحفاظ على جميع فحوصات التوافق التي تضمن نشر blazor wasm وإجراء اختبار المرحلة النهائية والنشر في نموذج wasm الفعلي.

هل هناك أي تحديثات لإعادة التحميل السريع ، هل ستظهر في .net5 ، أم أنها موجودة بالفعل في المعاينة؟

@ qin-guan لم يتم التخطيط لإعادة التحميل السريع لـ .NET 5 نظرًا للوقت المحدود المتبقي في هذا الإصدار. نأمل أن نقدم إعادة تحميل ساخنة لـ .NET 6.

@ danroth27 هههههههههههه

يرجى مسامحة رأيي الذي ربما يكون متحيزًا وربما جاهلًا بشكل مؤسف ، لكنني أشعر أحيانًا أن تحسينات الإنتاجية تتراجع عن تحسينات الأداء ( التي تم استثمار الكثير من العمل فيها )

أود أن أرى المدونة حول 250 تحسينًا للإنتاجية قمت بإجرائها في هذا الإصدار لأدواتك على سبيل المثال.
من وجهة نظري الشخصية ، إذا لم يحصل المطورون على سلسلة الأدوات الإنتاجية التي يحتاجون إليها ، فلن يتمكنوا من إنتاج البرامج بالسرعة الكافية للتغلب على المنافسين في السوق ، والنتيجة هي أن تطبيقاتهم لن تستمر في السوق لجني فوائد كل تلك التحسينات اللامعة والأداء الرائع. لذا من هذا المنظور فإن الأمر مزعج بعض الشيء.

ومع ذلك ، أحب مظهر تحسينات الأداء .. آمل حقًا ألا يكون NET 6 بعيدًا عن .NET 5 ونرى الإنتاجية في Blazor تبدأ في اللحاق بأطر العمل الأخرى!

@ qin-guan لم يتم التخطيط لإعادة التحميل السريع لـ .NET 5 نظرًا للوقت المحدود المتبقي في هذا الإصدار. نأمل أن نقدم إعادة تحميل ساخنة لـ .NET 6.

هذا محزن للغاية ، كنت أنتظر هذه الميزة لـ net5 😭😭😭

dazinator @ buster95 نشاركك خيبة أمل! كان إعادة التحميل السريع إلى حد كبير في أعلى قائمة الأشياء التي أردنا القيام بها في .NET 5 ولا يزال بالقرب من الجزء العلوي من الأعمال المتراكمة لدينا. كان من المتوقع في الأصل أن يكون جزءًا من جهد إعادة تحميل ساخن أوسع عبر .NET ، ولكن تم دفع كل ذلك إلى .NET 6. يعد إجراء إعادة التحميل بشكل جيد مشكلة صعبة - وهذا يعني إيجاد طرق موثوقة لتحديث التطبيق قيد التشغيل بأسرع ما يمكن ممكن وبدقة عالية. يتطلب الأمر وقتًا أطول للقيام بعمل جيد أكثر مما كان متاحًا لدينا في .NET 5.

من أجل إنتاجية المطورين ، نقوم بتجديد محرر Razor بالكامل ، والذي يجب أن يتيح مجموعة كاملة من ميزات الإنتاجية لتطوير Blazor (إعادة البناء ، انتقل إلى def / impl ، إجراءات التعليمات البرمجية ، إلخ). لقد جعلنا المحرر الجديد متاحًا كميزة معاينة اختيارية لأول مرة في وقت سابق من هذا الشهر ، ونتوقع أن نجعله محرر Razor الافتراضي في أوائل العام المقبل.

لدينا أيضًا عدد من ميزات إطار عمل Blazor الأخرى المتوفرة في .NET 5 بما في ذلك عزل CSS ، والتحميل البطيء ، وتعيين تركيز واجهة المستخدم ، وتعديل HTML Head ، وتحميل الملفات ، وتخزين المتصفح المحمي ، والمحاكاة الافتراضية ، إلخ.

dazinator @ buster95 نشاركك خيبة أمل! كان إعادة التحميل السريع إلى حد كبير في أعلى قائمة الأشياء التي أردنا القيام بها في .NET 5 ولا يزال بالقرب من الجزء العلوي من الأعمال المتراكمة لدينا. كان من المتوقع في الأصل أن يكون جزءًا من جهد إعادة تحميل ساخن أوسع عبر .NET ، ولكن تم دفع كل ذلك إلى .NET 6. يعد إجراء إعادة التحميل بشكل جيد مشكلة صعبة - وهذا يعني إيجاد طرق موثوقة لتحديث التطبيق قيد التشغيل بأسرع ما يمكن ممكن وبدقة عالية. يتطلب الأمر وقتًا أطول للقيام بعمل جيد أكثر مما كان متاحًا لدينا في .NET 5.

من أجل إنتاجية المطورين ، نقوم بتجديد محرر Razor بالكامل ، والذي يجب أن يتيح مجموعة كاملة من ميزات الإنتاجية لتطوير Blazor (إعادة البناء ، انتقل إلى def / impl ، إجراءات التعليمات البرمجية ، إلخ). لقد جعلنا المحرر الجديد متاحًا كميزة معاينة اختيارية لأول مرة في وقت سابق من هذا الشهر ، ونتوقع أن نجعله محرر Razor الافتراضي في أوائل العام المقبل.

لدينا أيضًا عدد من ميزات إطار عمل Blazor الأخرى المتوفرة في .NET 5 بما في ذلك عزل CSS ، والتحميل البطيء ، وتعيين تركيز واجهة المستخدم ، وتعديل HTML Head ، وتحميل الملفات ، وتخزين المتصفح المحمي ، والمحاكاة الافتراضية ، إلخ.

هل هناك إمكانية لإنشاء امتداد مجاني مثل https://www.livesharp.net ويكون مجانيًا للجميع؟
image
هذا الامتداد سهل التكوين ولكن في الوقت الحالي أستخدم إصدارًا تجريبيًا لمدة 15 يومًا 😢

لدي سؤال ، هل سيعمل إعادة التحميل السريع لنظام التشغيل MacOS كما هو مخطط حاليًا؟ لأن التحرير والمتابعة لا يعملان حتى الآن.

https://github.com/dotnet/runtime/issues/12409

wocar نعم ، أيًا كان الحل الذي نقدمه ، فسيكون عبر الأنظمة الأساسية ويعمل على نظام macOS.

@ danroth27 هل يمكنك تقديم حل لا يعمل بشكل جيد ، كما أنه من السهل التعامل معه؟
على سبيل المثال ، امتلاك برنامج وسيط للتطوير مع اتصال websocket يقوم بتحديث الصفحة بعد إعادة بناء كاملة بطيئة؟

@ danroth27 هل يمكنك تقديم حل لا يعمل بشكل جيد ، كما أنه من السهل التعامل معه؟
على سبيل المثال ، امتلاك برنامج وسيط للتطوير مع اتصال websocket يقوم بتحديث الصفحة بعد إعادة بناء كاملة بطيئة؟

xrkolovos إذا كان لديك VS ، فيمكنك استخدام ctrl-shift-b ، ctrl-alt-enter (يدويًا بعد الإنشاء) إذا كان لديك BrowserLink مثبتًا: https://docs.microsoft.com/en- us / aspnet / core / client-side / using-browserlink؟ view = aspnetcore-3.1

هل يمكنك توفير حل أداء ليس جيدًا ، كما أنه يسهل العمل معه؟
على سبيل المثال ، امتلاك برنامج وسيط للتطوير مع اتصال websocket يقوم بتحديث الصفحة بعد إعادة بناء كاملة بطيئة؟

نحن نعمل على القيام بذلك بالضبط باستخدام dotnet watch لـ .NET 5: https://github.com/dotnet/aspnetcore/pull/24574

dazinator @ buster95 نشاركك خيبة أمل! كان إعادة التحميل السريع إلى حد كبير في أعلى قائمة الأشياء التي أردنا القيام بها في .NET 5 ولا يزال بالقرب من الجزء العلوي من الأعمال المتراكمة لدينا. كان من المتوقع في الأصل أن يكون جزءًا من جهد إعادة تحميل ساخن أوسع عبر .NET ، ولكن تم دفع كل ذلك إلى .NET 6. يعد إجراء إعادة التحميل بشكل جيد مشكلة صعبة - وهذا يعني إيجاد طرق موثوقة لتحديث التطبيق قيد التشغيل بأسرع ما يمكن ممكن وبدقة عالية. يتطلب الأمر وقتًا أطول للقيام بعمل جيد أكثر مما كان متاحًا لدينا في .NET 5.

@ danroth27 هل من المفترض أن تعمل ميزة "إعادة التحميل

لقد نقلنا هذه المشكلة إلى مرحلة Backlog. هذا يعني أنه لن يتم العمل عليه للإصدار القادم. سنعيد تقييم الأعمال المتراكمة بعد الإصدار الحالي وننظر في هذا العنصر في ذلك الوقت. لمعرفة المزيد حول عملية إدارة المشكلات لدينا ولتحصل على توقعات أفضل فيما يتعلق بأنواع المشكلات المختلفة ، يمكنك قراءة

شكرا لإتصالك بنا.
نحن بصدد نقل هذه المشكلة إلى Next sprint planning المعلم للتقييم / التفكير المستقبلي. سنقوم بتقييم الطلب عندما نخطط للعمل من أجل المرحلة التالية. لمعرفة المزيد حول ما يمكن توقعه بعد ذلك وكيفية التعامل مع هذه المشكلة ، يمكنك قراءة المزيد حول عملية الفرز هنا .

أصبح الآن متاحًا على .NET5 كيف يمكنني تنشيطه؟

الآن أصبح متاحًا على .NET5 كيف يمكنني التنشيط

Dudeee تحقق من التعليقات أعلاه ، كان هذا يخطط لمعاينة .net 6 😢Screenshot_20201112-071336__01.jpg

@ buster95 فماذا فعل ستيف ساندرسون في .NET Conf 2020 يوم 1 في 2h38mm36ss لتحديث الصفحة تلقائيًا؟
رابط للفيديو: https://www.youtube.com/watch؟v=mS6ykjdOVRg

في 2h38mm36ss

yasserss ، في ذلك الوقت كانت صفية عبد الله تتحدث عن مكون <Virtualize> . يمكنك إرسال رابط الفيديو المناسب في الوقت المحدد بالنقر فوق زر مشاركة YouTube.

أنا متأكد من أنه يستخدم dotnet watch.

إذا قمت بفحص الفيديو في ساعتين: 25 دقيقة: 40 ثانية ، فهو يستخدم dotnet watch run لتشغيل التطبيق ، فربما يكون لدينا تحسن في dotnet watch run ، أتذكر آخر مرة استخدمت فيها dotnet watch كان أداء سيئًا. لا اعرف الان

نعم ، لقد عملنا في .NET 5 لتحسين أداء dotnet watch . على سبيل المثال ، أصبح الأمر الآن أكثر ذكاءً في عدم تشغيل dotnet restore كل مرة تقوم فيها بإجراء تغيير على المصدر ، كما أنه قادر على تشغيل عمليات إعادة التحميل في المتصفح.

هذه ليست الرؤية النهائية لإعادة التحميل السريع. ما زلنا نخطط لإنشاء ميزة إعادة تحميل ساخنة حقيقية في .NET 6 ، لكن تحسينات الأداء في dotnet watch في .NET 5 تعد خطوة إلى الأمام في الوقت الحالي.

قمنا أيضًا بتمكين دعم التحديث التلقائي للمتصفح في كل من dotnet watch وفي VS. لتشغيل هذه الميزة في VS ، تحتاج إلى ضبط هذا الخيار:

vs-auto-refresh

يختلف هذا عن إعادة التحميل السريع ، حيث لا يزال يتم إعادة تشغيل التطبيق وإعادة تحميل التطبيق في المتصفح. ولكنه يمكّنك من التركيز على تحرير الكود أثناء إعادة بناء الأدوات وتحديث المتصفح لك.

@ danroth27 هل من أخبار عن التحديث التلقائي باستخدام Visual Studio for Mac؟

mrlife شيء نتطلع إليه لإضافة دعم قريبًا جدًا. تضمين التغريدة

@ danroth27

قمنا أيضًا بتمكين دعم التحديث التلقائي للمتصفح في كل من dotnet watch وفي VS. لتشغيل هذه الميزة في VS ، تحتاج إلى ضبط هذا الخيار:

vs-auto-refresh

يختلف هذا عن إعادة التحميل السريع ، حيث لا يزال يتم إعادة تشغيل التطبيق وإعادة تحميل التطبيق في المتصفح. ولكنه يمكّنك من التركيز على تحرير الكود أثناء إعادة بناء الأدوات وتحديث المتصفح لك.

مع هذا التمكين يجب أن يكون كافيًا لتصحيح الأخطاء وإعادة التحميل عند الحفظ في VS2019؟ أعني ، لقد قمت بتمكين هذا بالخيار الذي ذكرته ، وعندما أصبت F5 وأبدأ في تصحيح الأخطاء وإجراء تغيير في الكود الخاص بي ، لا يتم إعادة تحميل المتصفح. يحدث ذلك عندما أقوم بتشغيل dotnet watch من وحدة تحكم مدير الحزم. كيف يمكنني تحقيق هذه الوظيفة بمجرد الضغط على F5 أثناء التصحيح؟

من خلال التحديث التلقائي مع قسم dotnet watch متاح في Visual Studio حتى الآن:

نأمل في جلب وظيفة التحديث التلقائي إلى Visual Studio في المستقبل.

BrunoBlanes يتوفر دعم التحديث التلقائي الآن مع Visual Studio مع تحديث 16.8. عليك فقط تشغيله باستخدام الخيار الذي أشرت إليه أعلاه. سأقوم بتحديث ملاحظات الإصدار لإزالة هذا التعليق.

تعمل ميزةporkopek Auto إعادة البناء لا تكون قيد التشغيل باستخدام مصحح الأخطاء.

التحديث / البناء التلقائي لا يعمل حتى عند تحديد خيار في visual studio 2019 16.8. أحيانًا أحصل على استثناء مرجعي فارغ في Visual Studio المنبثق عندما أقوم بتحديد Auto build وتحديث المتصفح بعد حفظ التغييرات. هل هناك أي شيء آخر يجب تغييره في visual studio 2019 16.8 حتى يعمل. @ danroth27

أدرك أنها ستكون تجربة كاملة في .NET 6. ماذا عن .NET 5 و Blazor Webassembly الحالي؟

هل يجب أن يعمل هذا الخيار "خيار الإنشاء والتحديث التلقائي" أيضًا مع Blazor Webassemblies؟ ما الذي يجب أن أفعله أكثر (من تعيين هذا الخيار على: "الإنشاء والتحديث التلقائي ..." والانتقال إلى ملف Filename.razor ، وتغيير شيء ما و CTRL + S؟ :) هل يجب إعادة تحميل المتصفح؟

كيف (أو هل) يرتبط ارتباط المتصفح؟

MussaratAziz المعلومات حول معلومات إعادة التحميل
في حالتي ، كان علي التمسك بملف تعريف IIS Express وتشغيل المشروع بدون مصحح الأخطاء.
أدى ذلك إلى إعادة التحميل السريع أو بالأحرى إعادة التشغيل السريع ولكن فقط لمشروع Blazor Server. لم أختبر إصدار WASM.

آمل حقًا أن يتضمن فريق ASP Core Dev (أنت رائع !!) هذا ، نظرًا لأن تعديل واجهة المستخدم دون التحميل السريع أمر مؤلم للغاية.

امل ان يساعد :)

استخدم LIVESHARP ... لا أصدق أن طفلًا في قبو منزله تمكن من فعل شيء لا تستطيع Microsoft القيام به.

تحرير: آسف لا تفهموني خطأ ، لقد قامت Microsoft بعمل رائع .. ولكن هذه الميزة ضرورية ... فقط لتغيير DIV أو أن السمة مثل 45 ثانية كحد أدنى

راجع للشغل: في الوقت الحالي ، أستخدم LiveSharp. نعم ، قد يكون الأمر مكلفًا بالنسبة للهواة وأود أيضًا أن أرى دعمًا رسميًا من الفريق في ريدموند.
ومع ذلك ، فإن المنتج رائع ، والدعم جيد جدًا ، وهو يعمل فقط.
https://www.livesharp.net/blazor/

في صحتك!

wocarChristianWeyer حقا نقدر دعمكم، الرجال! ولكن من فضلك لا تقلل من أهمية جهود مرض التصلب العصبي المتعدد. من الأسهل دائمًا على جهة خارجية إنشاء حل جديد تمامًا لأنني لست مسؤولاً أمام أي شخص. هذا يسمح لي بالمخاطرة.

على أي حال ، المزيد من التعاون ، أقل إثارة للعداء.

لا ، أنا لا أستخف - au counterire :-) في النهاية ، يتعلق الأمر ب prios.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات