Aspnetcore: Reload panas untuk Blazor

Dibuat pada 25 Jan 2018  ·  130Komentar  ·  Sumber: dotnet/aspnetcore

  • [] [Membangun pengoptimalan kinerja] (https://github.com/dotnet/aspnetcore/issues/22566)
  • [] Melalui dotnet watch
  • [] Pengembangan middleware (koneksi websocket untuk menerima pembaruan)
Components Big Rock Design affected-most area-blazor enhancement severity-major

Komentar yang paling membantu

Ini direncanakan untuk .NET 5, yang dijadwalkan pada November 2020. Kami masih mengadakan banyak diskusi tentang pendekatan apa yang ingin kami ambil di sini.

Semua 130 komentar

Lihat https://github.com/aspnet/blazor/issues/193 untuk pembaruan status pada item pekerjaan ini.

Untuk saat ini, kita dapat menggunakan dotnet watch run dan mengkompilasi ulang setiap kali perubahan terjadi.
Hanya menggunakan ini di file csproj:
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
<Watch Include="**\*.cshtml"/>

Kami mengalami masalah dengan pemuatan ulang langsung untuk 0.2.0, jadi pindahkan ini hingga kami dapat mengerjakan desain yang lebih kuat.

Hai, saya menggunakan dotnet sdk 2.2.100-preview1-009349 dan blazor 0.5.1 di Mac.
Reload langsung tidak berfungsi menggunakan "dotnet blazor serve". Jika saya mengubah beberapa markup html di file cshtml, aplikasi tidak memuat ulang sendiri dan setelah browser memuat ulang secara manual, aplikasi menampilkan konten html lama. Bagaimana saya bisa memecahkan masalah ini?

@ danroth27 , lalu apa https://github.com/aspnet/AspNetCore/issues/4056 ? Haruskah ditutup?

Beberapa pertanyaan!
1 Apakah trek ini memuat ulang langsung untuk blazor sisi server dan blazor sisi klien?

  1. Akankah reload kembali dikirimkan dalam rilis go live (yaitu dalam net core 3.0)?
  2. Akankah mekanisme reload langsung kehilangan status halaman (Ie setara dengan refresh f5) atau akan berperilaku mirip dengan Hot Module Replacement di javascript land - Yaitu hanya UI Komponen yang diubah yang akan dirender ulang? Jika yang terakhir, apakah akan ada mekanisme untuk mempertahankan status komponen pada klien di antara pembaruan?

Apakah trek ini dimuat ulang secara langsung untuk blazor sisi server dan blazor sisi klien?

Iya

Akankah reload kembali dikirimkan dalam rilis go live (yaitu dalam net core 3.0)?

Untuk .NET Core 3.0 kami berharap dapat mendukung rekondisi otomatis berdasarkan perubahan file, tetapi Anda masih perlu menyegarkan browser secara manual.

Akankah mekanisme reload langsung kehilangan status halaman (Ie setara dengan refresh f5) atau akan berperilaku mirip dengan Hot Module Replacement di javascript land - Yaitu hanya UI Komponen yang diubah yang akan dirender ulang? Jika yang terakhir, apakah akan ada mekanisme untuk mempertahankan status komponen pada klien di antara pembaruan?

Saat ini kami tidak memiliki rencana untuk mendukung penggantian modul panas dengan cara yang mempertahankan status klien.

Saat ini kami tidak memiliki rencana untuk mendukung penggantian modul panas dengan cara yang mempertahankan status klien.

Setidaknya, tidak secara otomatis. Secara teoritis jika Anda mengikuti arsitektur mirip Redux, atau apa pun yang benar-benar memisahkan status dari tampilan, maka Anda dapat membuat serialisasi status tersebut sebelum membongkar dan memulihkan saat memuat ulang. Namun ini bukanlah sesuatu yang kami rencanakan untuk dijadikan fitur, karena tidak semua orang ingin mengikuti arsitektur semacam itu.

maka Anda dapat membuat serialisasi status itu sebelum membongkar dan memulihkan saat memuat ulang.

Terima kasih. Harap, setelah siap, apakah Anda dapat mendokumentasikan kait yang sesuai (sebelum membongkar / memuat ulang dll) yang disediakan dalam desain untuk memfasilitasi ini. Saya ingin memulai paket implementasi / helper nuget untuk mengaktifkan pola ini bagi mereka yang menginginkannya!

Tidak dapat menggunakan dotnet watch run , mencoba mengikuti dan opsi lain juga,

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

Baru saja berakhir dengan solusi kasar berikut menggunakan nodemon :

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

Saya pikir saya seharusnya lari:
dotnet watch --project BlazorTest.Client run
Tapi itu memberi saya kesalahan.

Jika saya menggunakan:
dotnet watch --project BlazorTest.Server run

Dengan yang berikut ini di file proyek BlazorTest.Server.csproj:

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

Itu mengambil perubahan dalam proyek BlazorTest.Client dan memulai ulang server, jadi saya hanya perlu melakukan penyegaran manual di browser.

Itu mengambil perubahan dalam proyek BlazorTest.Client dan memulai ulang server, jadi saya hanya perlu melakukan penyegaran manual di browser.

Apakah itu berarti server restart setiap kali ada perubahan css, html ?

@dazinator , ya :-)

.. ok hanya memeriksa tapi itu hal yang buruk kan? Yaitu restart server seharusnya tidak diperlukan untuk perubahan file html atau css karena penyegaran browser (dengan cache tidak valid) sudah cukup?

Anda benar, itu tidak perlu. Cukup tambahkan atau hapus ekstensi file yang Anda minati dalam <ItemGroup> . Memperbarui jawaban saya untuk menghindari kebingungan.

Maaf jika di luar topik, apakah ada cara untuk memuat ulang langsung dari Visual Studio sekarang (sisi klien Blazor)? Sekarang untuk setiap perubahan tidak termasuk file wwwroot, saya harus membangun proyek (Ctrl Shift B) dan memuat ulang browser. Akan luar biasa jika VS dapat secara otomatis membangun penyimpanan perubahan.

@datvm Kami telah mengaktifkan ini untuk proyek Blazor sisi server, tetapi kami perlu melakukan beberapa pekerjaan untuk mengaktifkannya lagi untuk proyek Blazor sisi klien dan pustaka kelas Razor. Mungkin akan sedikit sebelum kita sampai ke ini karena kita sekarang fokus pada pengiriman .NET Core 3.0.

Untuk sisi klien, Anda mungkin dapat menggunakan apa pun yang hanya menyegarkan halaman penuh ketika sesuatu berubah di server. Steker tak tahu malu: periksa NetPack - jalankan proyek sampel dan buka contoh / BrowserReload: https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web/Views/Home/BrowserReload.cshtml - itu mungkin bisa membantu Anda. Jika tidak, ada solusi lain di luar sana untuk memicu pemuatan ulang halaman sisi klien berdasarkan perubahan file sisi server jika Anda tidak bisa menunggu solusi di luar kotak.

Terimakasih untuk solusinya, semoga benar-benar bermanfaat untuk orang lain. Bagi saya itu hanya akan menjadi peningkatan kualitas hidup, tidak ada yang kritis. Masih menyukai produk dan upaya yang dilakukan semua orang. Menekan ekstra Ctrl Shift B bekerja untuk saya (sekarang).

Solusi saya saat ini terlihat seperti ini:
Saya memiliki BlazorDebugLauncher exe terpisah yang dimulai oleh launchsettings.json yang diparameterisasi dengan port dan nama host yang akan dibuka browser.
Kalau begitu

  • memulai DebugAttacher exe kecil yang terpisah yang melepaskan dan memasang kembali Visual studio
  • mulai dotnet watch dijalankan di folder project
  • menyegarkan browser segera setelah proses server selesai (berfungsi dengan baik dengan MS Edge :-))

Jika ada yang tertarik, saya bisa meletakkan ini di suatu tempat ...

@AdmiralSnyder yakin saya akan tertarik untuk melihatnya jika Anda ingin berbagi!

inilah solusi saya. sedikit hacky, tetapi berfungsi: https://github.com/AdmiralSnyder/BlazorAutoRebuildDemo
(Saya akan membersihkan dan menambahkan readme minggu depan…)

@dazinator apakah Anda kebetulan melihatnya?

@AdmiralSnyder Saya telah melihat dan terima kasih telah berbagi, saya ingin melihat bagaimana / apakah Anda melampirkan debugger - Saya punya sedikit latar belakang pengembangan ekstensi vs yang Anda lihat :-)
Saya telah menetapkan pendekatan ini untuk memuat ulang browser (ini adalah perpustakaan saya sendiri yang tidak mengejutkan) https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web.Blazor.Host/Startup.cs - yang berjalan pengamat dalam aplikasi itu sendiri (menggunakan IFileProvider) daripada meluncurkan proses eksternal apa pun, dan ini memicu pemuatan ulang menggunakan sinyal r dan komponen sisi klien blazor yang Anda tambahkan ke tata letak blazor. Ini telah berfungsi dengan baik untuk saya di preview6 dan saya akan segera meningkatkan ke preview7 dan berharap ini terus berfungsi :-)

Saya tidak ingin membawa fitur yang menyegarkan ke dalam proyek. Bagaimana Anda dapat memisahkan celah detach-rebuild-restart-reattach tanpa proses eksternal?

Saya tidak ingin memasukkan fitur-fitur yang menyegarkan ke dalam proyek

Anda tidak harus memasukkan mereka ke dalam proyek dalam arti yang ketat. Misalnya Anda dapat menyertakan referensi paket dengan kondisi pada simbol kompilasi (Ie debug = true) dan Anda dapat meletakkan kode startup dalam arahan kompilasi (#if debug) - dan sekarang ketika Anda menjalankan aplikasi dalam mode rilis, Anda tidak akan memiliki paket waktu desain atau kode di dalamnya.

Bagaimana Anda dapat memisahkan celah detach-rebuild-restart-reattach tanpa proses eksternal?

Karena saya menjalankan proyek host dari VS, ia dapat membangun kembali proyek klien blazor yang direferensikan sesuai kebutuhan (netpack melihat proyek blazor IFileProvider) tanpa harus menghentikan atau melepaskan dari proses host. Satu-satunya saat ada "celah" adalah jika saya perlu mengubah kode ke aplikasi host saya sendiri (bukan klien blazor). Dalam hal ini - saya sangat berharap suatu hari "Edit dan Lanjutkan" akan berfungsi lagi karena itu akan menyelesaikan masalah terakhir ini. Namun tanpa itu, ada dua opsi untuk pendekatan saya:

  1. Jangan gunakan VS untuk menjalankan host, gunakan dotnet run watch dan kemudian pasang debugger secara manual (menyakitkan)
  2. Hentikan VS, buat perubahan ke host, mulai Vs lagi (biasanya ini yang saya lakukan)
    @AdmiralSnyder telah mengedit ini untuk menjawab pertanyaan Anda dengan lebih baik

Saya melihat ~ 10 detik untuk membangun kembali menggunakan dotnet watch . Apakah ada rencana untuk mempercepat pembangunan inkremental? Itu cukup menyakitkan saat melakukan iterasi pada komponen.

Sepertinya sebagian besar waktu dihabiskan untuk membuat komponen pisau cukur, jadi apakah itu berarti waktu pembuatan ini akan diskalakan ~ secara linier? (dengan aplikasi yang lebih kompleks membutuhkan waktu 30+ detik untuk membuatnya?)

Apakah ada rencana untuk mempercepat pembangunan inkremental? Itu cukup menyakitkan saat melakukan iterasi pada komponen.

Jika ini adalah Blazor sisi klien, pertimbangkan untuk menonaktifkan penautan untuk build Debug.

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

Saya telah berbicara dengan beberapa orang yang bingung tentang pembuatan ulang otomatis dan penyegaran otomatis.
Hal ini terutama disebabkan oleh fakta bahwa ketika Anda mengubah kode di Visual Studio fitur auto-rebuild dijalankan dan Anda juga melihat bahwa "sesuatu" sedang terjadi di browser. Sesuatu ini sering disalahartikan sebagai upaya muat ulang langsung.
Kemudian (karena fakta bahwa koneksi sinyal-r tidak dapat menyambung kembali ke status lama) Anda mendapatkan pesan "Gagal menyambung kembali ke server." kesalahan. Namun bagi orang yang baru mengenal Blazor, sepertinya sistem telah mencoba penyegaran otomatis yang gagal melakukannya yang merupakan pengalaman buruk.

Karena tidak ada ETA pada fitur Live Reload, apakah mungkin untuk tidak mencoba menyambung kembali secara otomatis jika koneksi terputus karena build? Atau setidaknya berikan pesan kesalahan yang lebih baik, jadi daripada "Gagal menyambung kembali ke server" sesuatu seperti "Segarkan Browser"?

@chucker terima kasih atas tip
Jika ada yang penasaran untuk melihat proyek blazor reload (untuk klien blazor / wasm), Anda dapat menjalankan proyek ini di sini untuk melihat apa yang saya maksud: https://github.com/dazinator/NetPack/blob/develop/src/NetPack .Web.Blazor.Host / Startup.cs

@Postlagerkarte Kami mencoba untuk menyambung kembali, tetapi karena status server hilang saat proses didaur ulang, penyambungan kembali gagal. Kami telah melakukan beberapa pekerjaan di ruang ini untuk mencoba meningkatkan pengalaman pengguna. Lihat bagian "Logika sambungan ulang yang ditingkatkan untuk aplikasi Server Blazor" di entri blog pengumuman Pratinjau 8 .

@Postlagerkarte memperbaiki pesan kesalahan itu di preview8

Bergantung pada cakrawala / garis waktu untuk pemuatan ulang langsung, Apakah perlu mempertimbangkan masalah terpisah untuk meningkatkan kecepatan kompilasi? Mungkin melalui strategi caching yang mirip dengan cara kerja MVC / cshtml (saya yakin hanya tampilan yang telah berubah yang dapat dikompilasi ulang)? Apakah ada potensi buah gantung rendah di sini?

Saat ini waktu siklus 10 detik antara membuat perubahan dan melihatnya di browser hanyalah masalah yang sangat besar, dan secara signifikan lebih besar daripada platform berbasis webpack pada skala aplikasi yang serupa. Dan untuk lebih jelasnya, saya hanya berbicara tentang blazor sisi server di sini.

Apakah perlu mempertimbangkan masalah terpisah untuk meningkatkan kecepatan kompilasi?

Ya, jika Anda melihat waktu build yang lambat, ajukan masalah dengan detail lingkungan build Anda.

Harus memuat ulang seluruh aplikasi klien blazor (mengunduh ulang semua dll) ketika Anda membuat perubahan kecil "hanya html" ke sebuah komponen (misalnya, mengubah beberapa konten html statis) adalah ... tidak terlalu optimal.

Apakah tim memiliki sesuatu untuk melacak peningkatan pengalaman itu atau haruskah saya membuka masalah baru?

@dazinator Judul terbitannya tidak begitu jelas, tapi kami menggunakan masalah ini untuk melacak penggantian modul panas serta memuat ulang secara langsung. Kami memiliki banyak investasi yang kami rencanakan untuk dilakukan dalam kerangka waktu .NET 5 di area ini.

Secara pribadi saya tidak keberatan menekan F5 dan karenanya tidak mempertimbangkan hot reload sebagai fitur prio teratas,
Namun untuk masuk ke aliran saya merasa sangat penting bahwa
ubah kode, f5, ubah kode, f5, ubah alur kerja kode sangat cepat (pun bermaksud). Tolong kerjakan itu dulu :)

Kami telah mengaktifkan ini untuk proyek Blazor sisi server, tetapi kami perlu melakukan beberapa pekerjaan untuk mengaktifkannya lagi untuk proyek Blazor sisi klien dan pustaka kelas Razor. Mungkin akan sedikit sebelum kita sampai ke ini karena kita sekarang fokus pada pengiriman .NET Core 3.0.

Dari apa yang dapat saya kumpulkan dari berbagai masalah GitHub adalah bahwa live-reload hanya berfungsi pada Blazor sisi server yang dijalankan tanpa debugging (dan pengembang harus memaksa menyegarkan halaman). Apakah itu benar? Saya tidak dapat menemukan dokumentasi yang pasti tentang subjek tersebut.

Apa yang kami miliki saat ini adalah dukungan rekondisi otomatis untuk proyek ASP.NET Core, di mana VS akan mengawasi sistem file untuk perubahan dan kemudian secara otomatis membangun kembali dan menjalankan ulang proyek. Ini hanya berfungsi ketika debugger tidak terpasang dan untuk file dalam proyek saat ini (proyek yang bergantung tidak diawasi).

Apakah mungkin untuk menonaktifkan upaya menyambung kembali secara otomatis jika alasan hilangnya koneksi adalah build? Atau mungkin menonaktifkan sambungan ulang otomatis sama sekali saat mengembangkan? Saya hanya ingin menyingkirkan upaya menghubungkan kembali yang gagal karena mereka mengganggu saya dan saya tetap menekan F5 :)

Jadi seharusnya lebih mudah untuk memiliki VS yang terlepas dan dipasang kembali secara otomatis, bukan?

Bisakah saya mendapatkan solusi akhir untuk Live Reloading untuk Blazor Server Apps dengan debugging?

@ bansalankit2601 Untuk diimplementasikan dalam .NET 5.0

Saya menjalankan pengamat sebagai dotnet watch run dan menggunakan VS untuk mengedit kode. Saat saya menyimpan, kodenya dikompilasi ulang dan browser terkunci, memberi tahu saya bahwa saya harus memuat ulang.

Saya bosan menekan F5 dan lebih memilih untuk tetap di VS sambil menyesuaikan berbagai hal, jadi TamperMonkey untuk menyelamatkan:

`` `` // == UserScript ==
// @name Muat ulang halaman
// @namespace http://tampermonkey.net/
// @ versi 0.1
// @description mencoba mengambil alih dunia!
// @ penulis Anda
// @ kecocokan http: // localhost : 5000 / *
// @ tidak ada
// == / 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);

``
Izinkan skrip untuk berjalan di http: // localhost : 5000 / *

Ini berfungsi untuk sisi server: https://github.com/martasp/BlazorLiveReload

Klien mem-ping server setiap 200ms. Ketika server down karena sedang dikompilasi ulang dari dotnet watch run , sebuah flag di-toggled, dan ketika server kembali secara otomatis F5s.

Repo tidak berfungsi untuk saya, tetapi saya membuka masalah dengan beberapa javascript yang berfungsi (setidaknya untuk saya di 3.0)

Apa status "Live reload" saat ini. Apakah itu didukung (tanpa F5 di browser)?
Jika tidak, apakah ada rencana untuk merilis fitur ini?

@moemar dalam standup komunitas terbaru David Fowler mengatakan ada rencana untuk kemungkinan versi berikutnya tetapi belum ada yang diberlakukan. https://youtu.be/bBc_NTUVtbE?list=PL1rZQsJPBU2St9-Mz1Kaa7rofciyrwWVx&t=5010

Apa yang terbaru tentang ini? 2,5 bulan sejak pembaruan terakhir ...

Saya juga menunggu hal yang sama.

Ini direncanakan untuk .NET 5, yang dijadwalkan pada November 2020. Kami masih mengadakan banyak diskusi tentang pendekatan apa yang ingin kami ambil di sini.

Untuk Blazor serverside, bagaimana dengan menggunakan mekanisme yang menangani pemutusan:

@dharmaturtle memberikan solusi yang mengambil server setiap 200ms. Ini berfungsi tetapi mengganggu karena terus-menerus mengaktifkan permintaan bahkan ketika server berjalan.

Jika Anda menimpa Blazor.defaultReconnectionHandler._reconnectionDisplay dari klien javascript blazor, Anda dapat menangkap pemutusan koneksi dan mulai mengambil server dan menunggu sampai server kembali aktif.

Keuntungannya adalah Anda hanya memiliki permintaan ketika server terputus.

Kekurangannya adalah '_reconnectionDisplay' adalah anggota pribadi dan Anda tahu ... ini jahat.

Sebagai mitigasi, apit kode javascript di <environment include="Development"> . Itu tidak akan berdarah di server produksi.

Repo lengkap di sini.

Saya baru saja beralih ke solusi ini beberapa menit yang lalu: https://remibou.github.io/Make-your-Blazor-development-faster/

Itu tidak terus menerus melakukan ping ke server, dan tidak mengkompilasi ulang seluruh .sln jika perubahan ada dalam file .html, .css atau .js; itu hanya memuat ulang halaman, yang bagus.

Hanya menautkan contoh lain di sini yang sedikit berbeda dari pendekatan di atas. Jalankan saja proyeknya - tidak memerlukan dotnet watch pada proyek wasm klien. Ini akan segera dimuat ulang jika Anda mengubah file css, html atau js di folder wwwroot dari wasm klien. Ini akan membangun kembali dan kemudian memuat ulang, jika Anda mengubah kode apa pun dalam proyek wasm klien seperti file pisau cukur dll. Anda memiliki kendali atas ini di startup.cs Anda, itulah sebabnya ini sedikit berbeda dengan solusi lain. Jika Anda juga masih menggunakan javascript atau file statis lain yang harus diproses sebelumnya dalam proyek Anda, Anda juga dapat menemukan contoh lain di repo yang sama yang mungkin berguna, seperti SystemJS HMR, rollup, dll.

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

Membuat pustaka yang mengkompilasi komponen pisau cukur dalam waktu proses.

LivePreview

Sebagai gantinya, kami memiliki penggantian modul panas, fitur ini memungkinkan kami untuk mengubah kode dan melihat perubahan langsung di browser Anda. Kita bisa membuat fitur serupa di blazor menggunakan kompiler Roslyn. Mengompilasi komponen pisau cukur dalam runtime dan melayani dengan WebSockets pada setiap perubahan file menggunakan pengamat file.

Bagaimana itu bekerja

Ini menggunakan mesin silet versi 3 untuk mengkompilasi komponen ke kelas c #. Kemudian menggunakan kompiler Roslyn, saya menyusun kelas-kelas itu untuk dirakit. Akhirnya, saya memuat komponen app.razor dari sebuah assembly dengan refleksi dan dengan pustaka modifikasi host Steve Sanderson Test saya mengubah komponen menjadi HTML biasa. Untuk melayani file HTML secara realtime saya menggunakan WebSockets untuk memiliki komunikasi dupleks penuh.

Bagaimana bisa lebih baik

Memperbaiki rute alih-alih menggunakan / pratinjau, ini dapat diterapkan dengan memasukkan klien WebSocket ke dalam setiap konteks permintaan HTTP.

Dalam perakitan web Blazor mungkin kita dapat memuat dan membongkar rakitan di browser?

Menggunakan dua server build, satu untuk pratinjau cepat dan server lain dengan jam tangan dotnet untuk build yang sebenarnya lebih lama.

Dalam perakitan web Blazor mungkin kita dapat memuat dan membongkar rakitan di browser?

Sumber: https://github.com/martasp/BlazorLiveReload

@martasp

Dalam perakitan web Blazor mungkin kita dapat memuat dan membongkar rakitan di browser?

Ini adalah versi mono runtime yang menjalankan aplikasi blazor wasm, tetapi sayangnya Anda tidak dapat membuat AppDomains baru (sepengetahuan saya) dan Anda tidak dapat membongkar rakitan dari AppDomain default.

Anda dapat malas memuat rakitan, begitulah cara saya saat ini memuat rakitan komponen secara dinamis hanya pada penggunaan pertama (untuk mempercepat waktu muat aplikasi awal), tetapi setelah dimuat, satu-satunya cara untuk memuat versi baru yang dapat saya lihat adalah mungkin untuk memuat versi baru dari rakitan yang sama ke dalam AppDomain yang sama dan mengganti semua referensi ke yang baru itu - meninggalkan yang lama di sana - tidak yakin apakah itu didukung karena saya belum mencobanya. Jika Anda membuatnya di jalan; biarkan aku tahu!

Saya berharap suatu hari kita mungkin mendapatkan runtime inti .net yang berjalan di browser sebagai gantinya dengan dukungannya untuk AssemblyLoadContexts dan Assembly.Unload ()

Hai @ danfrizal ,
pernahkah Anda melihat https://www.livesharp.net/?
Ini menggantikan kode saat sedang berjalan .

Ada etalase di mana ia memperbarui Blazor dengan cepat (meskipun seseorang perlu menavigasi pergi dan kembali ke rute saat ini).
Dan juga sebuah etalase di mana bahkan teks keluaran konsol dalam satu lingkaran diganti _ saat berjalan_ !

Ini sangat dekat dengan pengalaman yang saya harapkan!

@warung itu luar biasa. Saya ingin tahu bagaimana cara kerjanya! Saya dapat memikirkan beberapa kemungkinan mekanisme yang menggantikan metode dengan proxy dinamis.
Bagaimanapun cara kerjanya, pujian untuk pengembang / s. Saya juga ingin pengalaman seperti ini tetapi lebih disukai tanpa server dev yang terpisah, saya lebih suka hanya mengklik putar di VS.

@dazinator LiveSharp Server membuat serial kode yang diperbarui dan mengirimkannya ke aplikasi. Kemudian, aplikasi melakukan deserialisasi ke Expression Tree dan memasukkannya ke dalam metode yang diperbarui. Ada lebih banyak hal yang terjadi di dalam, tapi itulah intinya.

Omong-omong, Server LiveSharp hanya perlu dijalankan satu kali. Setelah itu, Anda baru memulai aplikasi seperti biasa.

Berikut ini demo muat ulang Blazor dengan LiveSharp: https://www.youtube.com/watch?v=MCh5-44UBpM

Penafian: Saya adalah penulis LiveSharp

@ionoy kudos, itu kerja bagus di sana!

Pengalaman yang berkembang untuk blazor sampai sekarang sangat menyakitkan. Edit, buat kembali, segarkan, debug ...
Dengan senang hati akan membayar $ 9 per bulan sampai ini diperbaiki, akan meningkatkan produktivitas setidaknya 5x.

Saat mendesain ini harap diperhatikan bahwa tidak semua dari kita menggunakan studio visual. Terima kasih

@wocar LiveSharp sudah lintas platform dan tidak bergantung pada IDE apa pun. Jadi Anda secara teoritis dapat menggunakannya dengan notepad.exe

@wocar Jika Anda tidak menggunakan VS, pertimbangkan juga dotnet watch : https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch

@SteveSandersonMS - dotnet watch membunuh negara, seperti yang pasti Anda ketahui. LiveSharp benar-benar mendorong perubahan tanpa memaksa muat ulang sehingga memungkinkan penyesuaian UI dengan umpan balik instan. Saya sangat berharap kalian segera menerapkan sesuatu yang setara, itu sangat dibutuhkan.

Ya tentu saja. Saya tidak menyarankan itu sama dengan LiveSharp. Hanya memastikan bahwa @wocar mengetahui opsi tersebut.

Terima kasih. Livesharp sudah diunduh dan bekerja dengan sangat baik, ingin melihat hal seperti itu diterapkan.

Jangan salah paham kalian telah melakukan pekerjaan luar biasa, namun jika Anda ingin umpan balik yang jujur ​​blazor debugging sangat menyebalkan. Saya telah menggunakan jam tangan dotnet dan itu agak berfungsi (lambat) dan saya tidak dapat men-debug (setidaknya tidak dengan Rider) jadi sebanyak saya ingin menggunakan blazor saya tidak bisa karena produktivitas. Jadi saya memutuskan untuk tetap menggunakan halaman pisau cukur sebagai gantinya.

Terima kasih.

Terima kasih atas umpan baliknya, @wocar! Saya tahu bahwa hot reload itu penting. Ini adalah sesuatu yang sangat ingin kami tambahkan, dan sedang mencari cara untuk menghadirkannya ke .NET 5 secara umum.

Saya tidak bisa debug (setidaknya tidak dengan Rider)

Anda mungkin sudah menyadarinya, tetapi untuk berjaga-jaga, Anda dapat melakukan debug dengan cara yang tidak bergantung pada IDE dengan menggunakan browser sebagai debugger .NET: https://docs.microsoft.com/en-us/aspnet/core /blazor/debug?view=aspnetcore-3.1#debug -di-browser

Anda mungkin sudah menyadarinya, tetapi untuk berjaga-jaga, Anda dapat melakukan debug dengan cara yang tidak bergantung pada IDE dengan menggunakan browser sebagai debugger .NET: https://docs.microsoft.com/en-us/aspnet/core /blazor/debug?view=aspnetcore-3.1#debug -di-browser

Terima kasih tidak sadar.

Jika saya menggunakan halaman pisau cukur (.cshtml) dan memodifikasi HTML dan menekan F5 setidaknya saya dapat melihat perubahannya. Mengapa ini tidak mungkin dengan Razor Components (.razor)

Saya juga ingin mendapatkan siklus pengembangan yang lebih cepat. Setelah kami memiliki hot-reload yang berfungsi untuk Vue, sangat menyenangkan untuk membuat perubahan dan melihatnya 1.0-2.0 detik kemudian di browser. Sekarang saya melihat kebutuhan akan sesuatu seperti itu di sini.

dotnet watch run memberi kita bagian dari jalan di sini - akankah ada jawaban menengah yang lebih sederhana, mungkin beberapa cara untuk mempercepat pembangunan sehingga lebih cepat ketika tidak ada selain file .razor yang berubah? Ini tidak akan menghindari keharusan untuk memulai ulang web host dan memuat ulang halaman, seperti yang dikatakan dbulic di atas, tetapi harus menunggu 1 detik daripada 20 detik untuk pembuatannya akan menjadi besar.

Apakah ada rencana untuk mengatasi hal ini dengan memiliki semacam "kompilasi runtime" untuk file .razor yang berjalan di browser, analog dengan kompilasi runtime dari file .cshtml yang tersedia di server? Misalnya agar file .razor itu sendiri langsung dimuat ke browser (bukan kumpulan yang telah dikompilasi sebelumnya) dan kemudian dikompilasi di sana, dan kemudian jika diedit di server, file .razor yang diubah dapat dimuat ulang ke browser dan dikompilasi ulang di sana? Saya suka kesejajaran di sini dengan cshtml dan bertanya-tanya apakah ini adalah jalur yang dipertimbangkan?

Ini direncanakan untuk .NET 5, yang dijadwalkan pada November 2020. Kami masih mengadakan banyak diskusi tentang pendekatan apa yang ingin kami ambil di sini.

Hai @ danroth27 , apakah arah sudah terbentuk? Jika belum ada yang dibagikan, mungkinkah kita akan melihat sesuatu di Build 2020?

Hai @rlife. Kami berharap untuk fokus utama pada rilis Blazor WebAssembly di BUILD. Dukungan untuk hot reload adalah sesuatu yang kami harapkan untuk dilihat. NET 5. Arah spesifik bagaimana hal ini akan dicapai belum ditentukan.

Saya sering memikirkan masalah ini. Setiap hari, saya menggunakan Pola 1. Pola 2 merupakan perubahan paradigma dalam praktiknya dibandingkan dengan Pola 1; ini membuatnya kurang mudah untuk diadopsi dibandingkan dengan meningkatkan Pola 1 secara langsung. Saya berharap Pola 3 mendekati apa yang bisa dicapai. Saya merasa Pattern 4 hanya aspiratif berdasarkan komentar di atas, namun, setelah melihat apa yang mungkin di MAUI, Pattern 6 terlihat sangat bagus.

Pola 1 (arus keluar dari kotak):

  1. Simpan perubahan ke sejumlah file
  2. Klik tombol atau tekan perintah keyboard untuk mengkompilasi
  3. Segarkan browser

Pola 2 ( dotnet watch run ):

  1. Simpan perubahan ke satu file
  2. Kompilasi ulang otomatis
  3. Simpan file lain yang diperlukan dan tunggu kompilasi ulang tambahan
  4. Segarkan browser

Pola 3:

  1. Simpan perubahan ke sejumlah file
  2. Sebagian atau tidak perlu kompilasi ulang
  3. Segarkan browser

Pola 4:

  1. Simpan perubahan ke sejumlah file
  2. Browser mencerminkan perubahan dalam keadaannya saat ini

Pola 5 (seperti MAUI hot reload ):

  1. Jangan simpan perubahan ke file
  2. Browser mencerminkan perubahan dalam keadaannya saat ini

Apa yang bisa dicapai?

Pola saya saat ini dengan dotnet watch run :

  1. Simpan perubahan ke semua file dengan Ctrl Shift S.
  2. Kompilasi ulang otomatis
  3. Penyegaran browser otomatis dijelaskan di sini .

Apakah masalah ini melacak build / reload panas untuk Blazer Server dan Web Assembly, atau ada yang terpisah untuk Web Assembly?

Apa statusnya ini? Saat ini menggunakan https://github.com/OYIon/LiveSharp

ini semua sangat tidak nyaman. Saya juga tidak bisa mendapatkan solusi jam tangan dotnet untuk bekerja dari proyek .dcproj alias docker-compose.Saya berharap sesuatu akan terjadi dalam waktu dekat.

teknologi hebat juga membutuhkan perkakas yang hebat!

hal-hal terus-menerus disorot dengan warna merah dan intellisense hanya bekerja dengan sangat sederhana.

Sama di sini, solusi saya:

  • Bunuh devenv.exe
  • hapus folder .vs \
  • Mulai ulang proyek

Perkakas akan bekerja kembali. Lakukan ini beberapa kali sehari. Dengan refactoring, beberapa kali per jam. Coba gabungkan dengan perjalanan Anda ke mesin kopi

hal-hal terus-menerus disorot dengan warna merah dan intellisense hanya bekerja dengan sangat sederhana.

Saya tahu ini sulit, tetapi apakah Anda memiliki langkah teguran untuk ini? Misalnya, apakah Anda memiliki beberapa kode proyek yang dapat Anda bagikan yang, pada versi tertentu dari Kode VS atau VS, dapat diandalkan menghasilkan kecerdasan atau kesalahan yang salah? Kami pasti ingin melacak dan memperbaiki masalah seperti itu.

cc @NTaylorMullen - apakah Anda mengetahui langkah diagnostik yang dapat diambil di sini untuk membantu kami melacaknya?

@Tokopedia

Mudah:

  • Ubah nama file komponen pisau cukur yang ada

image
(file dengan awalan yang sama juga akan diganti namanya)

image

  • Perbarui nama kelas di sebagian kelas

  • Perbarui / ganti nama referensi di komponen lain (manual, fitur perkakas yang sangat terlewat)

  • Membangun bekerja

  • Perkakas rusak

image

  • Setelah menghapus .\vs folder vs memulihkan

hal-hal terus-menerus disorot dengan warna merah dan intellisense hanya bekerja dengan sangat sederhana.

Saya tahu ini sulit, tetapi apakah Anda memiliki langkah teguran untuk ini? Misalnya, apakah Anda memiliki beberapa kode proyek yang dapat Anda bagikan yang, pada versi tertentu dari Kode VS atau VS, dapat diandalkan menghasilkan kecerdasan atau kesalahan yang salah? Kami pasti ingin melacak dan memperbaiki masalah seperti itu.

cc @NTaylorMullen - apakah Anda mengetahui langkah diagnostik yang dapat diambil di sini untuk membantu kami melacaknya?

terima kasih atas tanggapannya, saya akan mengawasinya. setiap jenis refactoring pasti bermasalah seperti yang telah diberikan JvanderStad sebagai contoh. kalau tidak, sejauh ini saya tidak bisa melihat pola apa pun.
misalnya saya baru saja membuka file 219 baris dan mendapat 167 kesalahan Intellisense. aturan: CS0121 CS0229 CS1503

apakah mungkin berguna untuk membuat masalah github tambahan untuk mengumpulkan masalah intellisense? atau apakah ini sudah ada? karena masalah ini pasti tempat yang salah.

terima kasih atas tanggapannya, saya akan mengawasinya. setiap jenis refactoring pasti bermasalah seperti yang telah diberikan JvanderStad sebagai contoh. kalau tidak, sejauh ini saya tidak bisa melihat pola apa pun.
misalnya saya baru saja membuka file 219 baris dan mendapat 167 kesalahan Intellisense. aturan: CS0121 CS0229 CS1503

apakah mungkin berguna untuk membuat masalah github tambahan untuk mengumpulkan masalah intellisense? atau apakah ini sudah ada? karena masalah ini pasti tempat yang salah.

Ini hampir jika db intellisense rusak / layanan bahasa macet, itu tetap ada setelah VS restart

  <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>

Saya menggunakan rider daripada vs dan sepertinya bekerja dengan sangat baik. Juga saya menggunakan alat yang disebut livesharp, meskipun tidak terlalu bagus atau dapat diandalkan, alat ini menyelesaikan pekerjaan dan saya bisa mendapatkan pembaruan UI tanpa harus mengkompilasi ulang.

@ cubed-it PowerShell ini membunuh Visual Studio, menghapus folder .vs \, memulai ulang solusi. Lebih sedikit perjalanan kopi diperlukan.

$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
}

Bagi mereka yang ingin tetap menggunakan VS, Anda dapat menggunakan ekstensi ini untuk pekerjaan sekitar ( https://marketplace.visualstudio.com/items?itemName=pragmatrix.BuildOnSave ) yang secara otomatis dibangun di save & hanya dapat diaktifkan untuk proyek startup (Ini adalah proyek blazor Anda). Untuk pengalaman yang lebih baik, matikan "Browser Makan Siang" di VS sehingga tidak menutup browser secara otomatis. Tetapi Anda harus menekan F5 di browser :-(

Benar-benar merasakan semua rasa sakit Anda sehubungan dengan perkakas Razor. Untungnya itu adalah sesuatu yang ingin kami atasi dalam kerangka waktu .NET 5. Jika Anda ingin mencoba perkakas ini (peringatan ini sangat eksperimental saat ini) Anda dapat mengunduh rilis pratinjau VS terbaru dan memeriksa kotak centang fitur pratinjau berikut (Alat -> Opsi -> Lingkungan -> Fitur Pratinjau):

image

Sangat mungkin itu akan menyelesaikan banyak masalah editor Razor yang disebutkan dalam masalah ini. Karena itu, kami tahu editor baru memiliki beberapa celah dan bahkan beberapa bug buruk saat membandingkan dengan editor yang ada, tetapi kami ingin tahu tanggapan Anda terlepas dari apakah itu pengalaman yang lebih baik secara keseluruhan untuk kebutuhan Anda.

unduh rilis pratinjau VS terbaru
https://visualstudio.microsoft.com/vs/preview/

@NTaylorMullen Apakah ada masalah di mana saya dapat mencatat kesalahan terkait perkakas Razor? Pratinjau terbaru tidak berfungsi sama sekali :(

image

@JvanderStad Saya yakin sintaksnya harus "@(row => ...

@JvanderStad Saya yakin sintaksnya harus "@(row => ...

Berfungsi dengan baik di versi saat ini

image

@JvanderStad ah, jika Anda berbicara tentang warna, yang saat ini rusak, seperti banyak hal lainnya

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

Saya merindukan postingan blog Daniels. Sekarang saya tahu apa yang diharapkan. Thnx

@NTaylorMullen Apakah ada masalah di mana saya dapat mencatat kesalahan terkait perkakas Razor? Pratinjau terbaru tidak berfungsi sama sekali :(

Ya C # pewarnaan semantik adalah sesuatu yang belum kami terapkan di editor baru 😄

@ danroth27 Jika hot reload untuk blazor wasm rumit karena arsitekturnya, apakah menurut Anda hot-reload untuk server blazor bisa melakukan triknya. Idenya adalah untuk merender komponen pisau cukur dengan mulus (dari proyek blazor wasm) melalui server-renderer selama pengembangan dengan menjaga semua pemeriksaan kompatibilitas yang memastikan penerapan blazor wasm dan melakukan pengujian tahap akhir dan penerapan dalam model wasm yang sebenarnya.

apakah ada pembaruan untuk hot reload, apakah akan tersedia di .net5, atau sudah keluar di pratinjau?

@ qin-guan Pemuatan ulang panas tidak direncanakan untuk .NET 5 karena waktu yang tersisa dalam rilis itu terbatas. Kami berharap dapat mengirimkan hot reload untuk .NET 6.

@ danroth27 ah bujang !!

Mohon maafkan pendapat saya yang mungkin bias dan mungkin sangat bodoh, tetapi terkadang saya merasa peningkatan produktivitas mengambil tempat duduk belakang untuk peningkatan kinerja ( yang mana telah banyak pekerjaan yang diinvestasikan )

Saya ingin melihat blog tentang 250 peningkatan produktivitas yang telah Anda lakukan pada rilis ini untuk perkakas Anda, misalnya.
Dari sudut pandang pribadi saya, jika pengembang tidak mendapatkan rantai alat produktif yang mereka butuhkan, mereka tidak akan dapat membuat perangkat lunak cukup cepat untuk mengalahkan pesaing dalam memasarkan, dan hasilnya adalah, aplikasi mereka tidak akan bertahan pasar untuk mendapatkan keuntungan dari semua peningkatan kinerja yang bagus dan berkilau. Jadi dari perspektif itu, ini sedikit menjengkelkan.

Namun saya menyukai tampilan peningkatan kinerja .. Saya hanya berharap .NET 6 tidak terlalu jauh di belakang .NET 5 dan kami melihat produktivitas di Blazor mulai mengejar ketinggalan dengan kerangka kerja lain!

@ qin-guan Pemuatan ulang panas tidak direncanakan untuk .NET 5 karena waktu yang tersisa dalam rilis itu terbatas. Kami berharap dapat mengirimkan hot reload untuk .NET 6.

sangat menyedihkan, saya menunggu fitur ini untuk .net5 😭😭😭

@dazinator @ buster95 Kami berbagi kekecewaan Anda! Hot reload cukup banyak di bagian atas daftar hal-hal yang ingin kami lakukan di .NET 5 dan masih berada di dekat bagian atas backlog kami. Awalnya diharapkan menjadi bagian dari upaya hot reload yang lebih luas di seluruh .NET, tetapi itu semua didorong ke .NET 6. Melakukan hot reload dengan baik adalah masalah yang rumit - itu berarti menemukan cara yang dapat diandalkan untuk memperbarui aplikasi yang sedang berjalan secepat mungkin dan dengan kesetiaan tinggi. Ini hanya membutuhkan lebih banyak waktu untuk melakukannya dengan baik daripada yang kami miliki di .NET 5.

Untuk produktivitas pengembang, kami sepenuhnya membenahi editor Razor, yang seharusnya mengaktifkan sejumlah fitur produktivitas untuk pengembangan Blazor (pemfaktoran ulang, buka def / impl, tindakan kode, dll.). Kami membuat editor baru tersedia sebagai fitur pratinjau opsional untuk pertama kalinya awal bulan ini, dan kami berharap untuk membuatnya default Razor Editor mungkin awal tahun depan.

Kami juga memiliki sejumlah fitur kerangka kerja Blazor lainnya yang masuk .NET 5 termasuk isolasi CSS, pemuatan lambat, mengatur fokus UI, memodifikasi Kepala HTML, mengunggah file, penyimpanan browser yang dilindungi, virtualisasi, dll.

@dazinator @ buster95 Kami berbagi kekecewaan Anda! Hot reload cukup banyak di bagian atas daftar hal-hal yang ingin kami lakukan di .NET 5 dan masih berada di dekat bagian atas backlog kami. Awalnya diharapkan menjadi bagian dari upaya hot reload yang lebih luas di seluruh .NET, tetapi itu semua didorong ke .NET 6. Melakukan hot reload dengan baik adalah masalah yang rumit - itu berarti menemukan cara yang dapat diandalkan untuk memperbarui aplikasi yang sedang berjalan secepat mungkin dan dengan kesetiaan tinggi. Ini hanya membutuhkan lebih banyak waktu untuk melakukannya dengan baik daripada yang kami miliki di .NET 5.

Untuk produktivitas pengembang, kami sepenuhnya membenahi editor Razor, yang seharusnya mengaktifkan sejumlah fitur produktivitas untuk pengembangan Blazor (pemfaktoran ulang, buka def / impl, tindakan kode, dll.). Kami membuat editor baru tersedia sebagai fitur pratinjau opsional untuk pertama kalinya awal bulan ini, dan kami berharap untuk membuatnya default Razor Editor mungkin awal tahun depan.

Kami juga memiliki sejumlah fitur kerangka kerja Blazor lainnya yang masuk .NET 5 termasuk isolasi CSS, pemuatan lambat, mengatur fokus UI, memodifikasi Kepala HTML, mengunggah file, penyimpanan browser yang dilindungi, virtualisasi, dll.

Apakah ada kemungkinan untuk membuat ekstensi gratis seperti https://www.livesharp.net dan gratis untuk semua?
image
ekstensi ini mudah dikonfigurasi tetapi untuk saat ini saya menggunakan versi uji coba 15 hari 😢

Saya punya pertanyaan, apakah hot reload akan berfungsi untuk MacOS seperti yang direncanakan saat ini? Karena edit dan lanjutkan tidak berfungsi seperti sekarang.

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

@wocar Ya, solusi apa pun yang kami kirimkan akan lintas platform dan berfungsi di macOS.

@ danroth27 dapatkah Anda memberikan solusi
Misalnya memiliki middleware Pengembangan dengan koneksi websocket yang menyegarkan halaman setelah pembangunan ulang selesai yang lambat?

@ danroth27 dapatkah Anda memberikan solusi
Misalnya memiliki middleware Pengembangan dengan koneksi websocket yang menyegarkan halaman setelah pembangunan ulang selesai yang lambat?

@xrkolovos jika Anda memiliki VS Anda dapat menggunakan ctrl-shift-b , ctrl-alt-enter (secara manual setelah dibangun) jika Anda memiliki BrowserLink terpasang: https://docs.microsoft.com/en- us / aspnet / core / client-side / using-browserlink? view = aspnetcore-3.1

dapatkah Anda memberikan solusi yang tidak terlalu bagus, juga mudah digunakan?
Misalnya memiliki middleware Pengembangan dengan koneksi websocket yang menyegarkan halaman setelah pembangunan ulang selesai yang lambat?

Kami sedang mengerjakan itu dengan dotnet watch untuk .NET 5: https://github.com/dotnet/aspnetcore/pull/24574

@dazinator @ buster95 Kami berbagi kekecewaan Anda! Hot reload cukup banyak di bagian atas daftar hal-hal yang ingin kami lakukan di .NET 5 dan masih berada di dekat bagian atas backlog kami. Awalnya diharapkan menjadi bagian dari upaya hot reload yang lebih luas di seluruh .NET, tetapi itu semua didorong ke .NET 6. Melakukan hot reload dengan baik adalah masalah yang rumit - itu berarti menemukan cara yang dapat diandalkan untuk memperbarui aplikasi yang sedang berjalan secepat mungkin dan dengan kesetiaan tinggi. Ini hanya membutuhkan lebih banyak waktu untuk melakukannya dengan baik daripada yang kami miliki di .NET 5.

@ danroth27 Apakah "reload hot yang lebih luas" untuk .NET juga seharusnya bekerja untuk proyek non-web? Dan apakah ada masalah di mana saya bisa melacaknya?

Kami telah memindahkan masalah ini ke milestone Backlog. Ini berarti bahwa ini tidak akan dikerjakan untuk rilis yang akan datang. Kami akan menilai kembali backlog setelah rilis saat ini dan mempertimbangkan item ini pada saat itu. Untuk mempelajari lebih lanjut tentang proses manajemen masalah kami dan untuk mendapatkan harapan yang lebih baik mengenai berbagai jenis masalah, Anda dapat membaca Proses Triase kami.

Terima kasih telah menghubungi kami.
Kami memindahkan masalah ini ke pencapaian Next sprint planning untuk evaluasi / pertimbangan di masa mendatang. Kami akan mengevaluasi permintaan tersebut ketika kami merencanakan pekerjaan untuk pencapaian berikutnya. Untuk mempelajari lebih lanjut tentang apa yang akan terjadi selanjutnya dan bagaimana masalah ini akan ditangani, Anda dapat membaca lebih lanjut tentang proses triase kami di sini .

Sekarang sudah tersedia di .NET5 bagaimana cara mengaktifkannya?

Sekarang tersedia di .NET5 bagaimana cara mengaktifkannya

Dudeee periksa komentar di atas, ini berencana untuk .net 6-preview 😢Screenshot_20201112-071336__01.jpg

@ buster95 lalu apa sih yang dilakukan steve sanderson di .NET Conf 2020 hari 1 di 2h38mm36ss untuk menyegarkan halaman otomatis?
Tautan ke video: https://www.youtube.com/watch?v=mS6ykjdOVRg

dalam 2h38mm36ss

@yasserss , saat itu Safia Abdalla sedang membicarakan komponen <Virtualize> . Anda dapat mengirim tautan video yang tepat pada waktu yang ditentukan dengan mengklik tombol bagikan YouTube.

@BrunoBlanes maaf ini dia: https://youtu.be/mS6ykjdOVRg?t=8917

Saya cukup yakin dia menggunakan dotnet watch.

Jika Anda memeriksa video dalam 2h: 25m: 40s dia menggunakan dotnet watch run untuk menjalankan aplikasi mungkin kami memiliki peningkatan dalam dotnet watch run , saya ingat terakhir kali saya menggunakan kinerja jam tangan dotnet buruk saya tidak tahu sekarang

Ya, kami bekerja di .NET 5 untuk meningkatkan kinerja dotnet watch . Misalnya, sekarang lebih pintar tentang tidak menjalankan dotnet restore setiap kali Anda membuat perubahan sumber, dan ini dapat memicu pemuatan ulang di browser.

Ini bukan visi utama untuk hot reload. Kami masih berencana untuk membuat fitur muat ulang yang benar-benar panas di .NET 6, tetapi peningkatan dotnet watch perf di .NET 5 adalah langkah maju untuk sementara waktu.

Kami juga mengaktifkan dukungan untuk menyegarkan peramban secara otomatis di dotnet watch dan di VS. Untuk mengaktifkan fitur ini di VS, Anda perlu menyetel opsi ini:

vs-auto-refresh

Ini berbeda dengan hot reload, karena aplikasi masih dimulai ulang dan dimuat ulang di browser. Tetapi itu memungkinkan Anda untuk fokus pada pengeditan kode sementara perkakas membangun kembali dan menyegarkan browser untuk Anda.

@ danroth27 Ada berita tentang penyegaran otomatis dengan Visual Studio untuk Mac?

@mrlife sesuatu yang kami cari untuk segera menambahkan dukungan. FYI @jongalloway

@dandoth27

Kami juga mengaktifkan dukungan untuk menyegarkan peramban secara otomatis di dotnet watch dan di VS. Untuk mengaktifkan fitur ini di VS, Anda perlu menyetel opsi ini:

vs-auto-refresh

Ini berbeda dengan hot reload, karena aplikasi masih dimulai ulang dan dimuat ulang di browser. Tetapi itu memungkinkan Anda untuk fokus pada pengeditan kode sementara perkakas membangun kembali dan menyegarkan browser untuk Anda.

Dengan mengaktifkan ini seharusnya cukup untuk melakukan debugging dan memuat ulang di simpan di VS2019? Maksud saya, saya mengaktifkan ini dengan opsi yang Anda sebutkan, dan ketika saya menekan F5 dan mulai debugging dan membuat perubahan dalam kode saya, browser tidak memuat ulang. Itu terjadi ketika saya menjalankan dotnet watch dari konsol manajer paket. Bagaimana cara mencapai fungsi ini hanya dengan menekan F5 saat debugging?

Diberikan oleh bagian Auto refresh dengan dotnet watch dari catatan Rilis ASP.NET Core 5, saya rasa dotnet watch auto refresh belum tersedia dalam Visual Studio:

Kami berharap dapat menghadirkan fungsionalitas penyegaran otomatis ke Visual Studio di masa mendatang.

@BrunoBlanes Dukungan penyegaran otomatis sekarang tersedia dengan Visual Studio dengan pembaruan 16.8. Anda hanya perlu menyalakannya menggunakan opsi yang saya tunjukkan di atas. Saya akan memperbarui catatan rilis untuk menghapus komentar itu.

@porkopek Bangun ulang otomatis dan segarkan otomatis hanya berfungsi saat Anda tidak menjalankan debugger.

Penyegaran / pembuatan otomatis tidak berfungsi bahkan memilih opsi di studio visual 2019 16.8. Kadang-kadang saya mendapatkan pengecualian referensi nol di studio visual yang muncul ketika saya memilih Auto build dan refresh browser setelah menyimpan perubahan. apakah ada hal lain yang perlu diubah di visual studio 2019 16.8 agar berfungsi. @dandoth27

Saya mengerti bahwa ini akan menjadi pengalaman penuh dalam .NET 6. Bagaimana dengan .NET 5 dan Blazor Webassembly saat ini?

Haruskah opsi ini "Auto build and refresh option" juga berfungsi untuk Blazor Webassemblies? Apa yang harus saya lakukan lebih banyak (daripada menyetel opsi ini ke: "Auto build and refresh ..." dan membuka file Filename.razor, mengubah sesuatu dan CTRL + S? :) Haruskah itu memuat ulang browser?

Bagaimana (atau apakah) berkorelasi dengan tautan Peramban?

@MussaratAziz Informasi tentang informasi hot-reload ini tidak lengkap atau halaman msdn tersedia.
Dalam kasus saya, saya harus tetap berpegang pada profil IIS Express dan menjalankan proyek tanpa debugger.
Ini membuat hot-reload atau lebih tepatnya hot-restart berjalan tetapi hanya untuk proyek Blazor Server. Saya belum menguji versi WASM.

Saya sangat berharap ASP Core Dev Team (Anda luar biasa !!) akan memasukkan ini, karena mengubah UI tanpa hotreload cukup menyakitkan.

Semoga membantu :)

GUNAKAN LIVESHARP ... tidak percaya seorang anak di ruang bawah tanahnya berhasil melakukan sesuatu yang tidak bisa dilakukan Microsoft.

Sunting: maaf jangan salah paham, Microsoft telah melakukan pekerjaan yang hebat .. tetapi fitur ini adalah suatu keharusan ... hanya untuk mengubah DIV atau atribut seperti minimum 45 detik

BTW: untuk saat ini saya menggunakan LiveSharp. Ya, ini mungkin mahal untuk penghobi dan saya juga ingin melihat dukungan resmi dari tim di Redmond.
Namun, produknya bagus, dukungannya sangat bagus, dan berfungsi dengan baik.
https://www.livesharp.net/blazor/

Bersulang!

@wocar @ChristianWeyer Benar-benar menghargai dukungan Anda, guys! Tapi tolong jangan meremehkan upaya MS. Hampir selalu lebih mudah bagi pihak ketiga untuk membuat solusi yang benar-benar baru karena saya tidak bertanggung jawab kepada siapa pun. Ini memungkinkan saya mengambil risiko.

Bagaimanapun, lebih banyak kerja sama, lebih sedikit permusuhan.

Tidak, saya tidak meremehkan - au contraire :-) Pada akhirnya, ini tentang prios.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat