Futó kód írása és hibakeresése a Hot Reload funkcióval a Visual Studio-ban (C#, Visual Basic, C++)

Hot Reload korábban Szerkesztés és Folytatás néven ismerték Visual Studio dokumentációban és néhány régebbi felhasználói felületi szövegben.

2022 Visual Studio-tól kezdve a Visual Studio Hot Reload felülete mind a felügyelt .NET, mind a natív C++ alkalmazásokban működik. Függetlenül attól, hogy milyen típusú alkalmazáson dolgozik, a Hot Reload célja, hogy a lehető legtöbb alkalmazás-újraindítást mentse a módosítások között, ami hatékonyabbá teszi azáltal, hogy kevesebb időt tölt az alkalmazások újraépítésére, újraindítására és az alkalmazás korábbi helyére való visszalépésre való várakozással.

A hatékonyság növeléséhez lehetővé tesszük az alkalmazás kódfájljainak szerkesztését és a kódmódosítások azonnali alkalmazását a futó alkalmazásra, más néven Hot Reload. A módosítások alkalmazása után futtassa újra a kódot úgy, hogy végrehajt egy műveletet az alkalmazásban (vagy valamilyen időzítőn keresztül stb.), és azonnal megtekintheti a módosításokat; nem szükséges szüneteltetni az alkalmazást töréspontokon keresztül!

Futó kód frissítése Hot Reload

  1. Nyisson meg egy projektet egy támogatott alkalmazástípus alapján. Lásd: .NET és C++ támogatott alkalmazások.

  2. Indítsa el az alkalmazást a csatolt hibakeresővel az F5 vagy , ha támogatott, Ctrl+F5.

  3. Nyisson meg egy kódfájlt, és módosítsa a kódot.

  4. Alkalmazza a kódmódosításokat a Hot ReloadA Hot Reload ikon képernyőképe. gombbal, vagy nyomja le a ALT+F10 billentyűt.

    A Hot Reload képernyőképe.

A felhasználói felület változásainak megtekintéséhez újra végre kell hajtani a kódot. Egy gomb mögötti kódnak például újra végre kell hajtania, vagy az időzítőn keresztül időközönként aktivált kódot. Egy másik példa, ASP.NET Core támogatja az automatikus böngészőfrissítést a MetadataUpdateHandler funkció miatt.

.NET-alkalmazások támogatása

  • A 2022-Visual Studio használatával és az alkalmazás hibakeresővel való elindításával az alapszintű Hot Reload-élmény a legtöbb .NET alkalmazással és keretrendszerverzióval működik. Ez a támogatás magában foglalja a .NET-keretrendszert, a .NET Core-t és a .NET 5+ verziót (C# és Visual Basic, ahol alkalmazható). Ebben a forgatókönyvben az az elvárás, hogy ha a hibakeresőt használja, tegyük fel, hogy Hot Reload elérhető, és próbálkozzon vele!
  • A Visual Studio 2022 használata során, ha nem használja a hibakeresőt (például az alkalmazás elindításához nyomja meg a CTRL-F5-öt), a Hot Reload elérhető, amikor a legtöbb .NET 6 típusú alkalmazást céloz meg. Ebben a forgatókönyvben azok az alkalmazások, amelyek nem célozzák meg a .NET 6+ verziót (vagyis a .NET 5-öt vagy annál alacsonyabbat), nem támogatják a "hibakereső nélküli" lehetőséget, és a Hot Reload támogatás eléréséhez használniuk kell a hibakeresőt.
  • A 2022-Visual Studio .NET 6+ alkalmazással való használata esetén a legtöbb forgatókönyv támogatott. Ez a támogatás nem korlátozódik a korábban említett új "nincs hibakereső" funkcióra. Egyéb új képességeket is tartalmaz, például a Blazor-projektek gyakori újratöltésének támogatását, és általánosabban a Razor-fájlok ASP.NET Core alkalmazásokban való szerkesztését és a CSS-Hot Reload. A Visual Studio 2022 és a .NET 6-ot megcélzott alkalmazások együttes használata a leghatékonyabb Hot Reload élményt nyújtja.

Az alábbi táblázat a .NET Hot Reload támogatásához szükséges minimális .NET verziót mutatja be a hibakereső csatlakoztatásával (F5) és a hibakereső csatlakoztatása nélkül (Ctrl+F5) a projekt típusa alapján. Visual Studio 2022 17.8-es vagy újabb verziója szükséges.

Alkalmazás típusa F5 Ctrl+F5 MetadataUpdateHandler támogatás
Konzol .NET 6 .NET 6
Futtatás Linux/macOS rendszeren
(Docker és WSL)
.NET 8 .NET 6 .NET 8
Futtatás Arm64 platformon .NET 7 .NET 7 .NET 7
WPF .NET 6 .NET 6
WinForms .NET 6 .NET 6
ASP.NET .NET 6 .NET 6
Blazor-kiszolgáló .NET 6 .NET 6 .NET 6
Blazor WebAssembly (egy .NET alapú keretrendszer, amely lehetővé teszi webes alkalmazások futtatását közvetlenül a böngészőben) .NET 6 .NET 6 .NET 6
MAUI
(WinUI/Android/iOS)
.NET 6 -- --

A típusú szerkesztéseket, amelyeket a Hot Reload során végezhet, a futtatókörnyezet és a fordító verziója határozza meg, nem pedig az alkalmazás indításához használt módszer (F5 vagy Ctrl+F5).

A következő szakaszokban további részleteket adunk meg.

.NET-keretrendszeralkalmazások támogatása

A Visual Studio 2022 használatakor és az alkalmazás hibakeresővel való indításakor az alapvető Hot Reload-élmény a legtöbb .NET alkalmazással és keretrendszerverzióval működik. Ez a támogatás magában foglalja a .NET Keretrendszert, a .NET Core-t és a .NET 5+ verziót (C# és Visual Basic esetén is). Ebben a forgatókönyvben az az elvárás, hogy ha a hibakeresőt használja, tegyük fel, hogy Hot Reload elérhető, és próbálkozzon vele!

C++ alkalmazások támogatása

A Visual Studio 2022 használatakor és az alkalmazás hibakeresővel (F5) való indításakor, a Hot Reload gomb használatával használhatja a hot reload-ot egy natív C++ alkalmazás futtatása közben a hibakeresővel. Hot Reload CMake- és OpenFolder-projektek használatával készült alkalmazások esetében is támogatott.

Ahhoz, hogy a projekt támogassa a Hot Reload, a következő beállításokra van szüksége:

  • Project > Tulajdonságok > C/C++ > Általános >A hibakeresési információformátum beállításnak "Programadatbázis szerkesztésre és folytatásra /ZI" értékre kell állítania
  • Project > Properties > Linker > General >Enable Incremental Linking beállítását "Igen /INCREMENTAL" értékre kell állítani.

A támogatott módosításokért lásd C++ támogatott kódmódosítások.

Visual Studio 2022 egy .NET vagy .NET-keretrendszeralkalmazással a hibakereső használatakor

A Visual Studio 2022 használatakor és az alkalmazás hibakeresővel való indításakor Hot Reload a legtöbb alkalmazás-keretrendszerrel működik.

Ahol csak .NET van telepítve, és a Visual Studio felügyelt hibakeresőjét használja, alapvető Hot Reload támogatásban kell részesülnie. Ez azt jelenti, hogy ebben a forgatókönyvben még az olyan projektek is jól működnek, mint Azure Functions.

Jegyzet

Alapértelmezés szerint egyes projektek vegyes módú hibakeresést használnak, ami nem támogatja a Hot Reload. Ezt a beállítást a projekt beállításokban módosíthatja, ha a Project > Tulajdonságok > Hibakeresés > A hibakeresés indítási profiljai felhasználói felület megnyitása > Natív kód hibakeresés engedélyezése értéket false-ra állítja.

Visual Studio 2022-ben egy .NET alkalmazással, de nem használva a hibakeresőt

Hot Reload hibakereső nélkül érhető el, ha a legtöbb .NET 6+ alkalmazástípust célozza meg.

Ez a funkció kizárólag a .NET 6-os vagy újabb verziókhoz érhető el. Azok az alkalmazások, amelyek nem célozzák meg a .NET 6+ (vagyis a .NET 5-öt vagy alacsonyabbat célozzák), nem támogatják a "nincs hibakereső" forgatókönyvet, és a Hot Reload funkciók eléréséhez a hibakeresőt kell használniuk.

Emellett jelenleg nem minden projekttípus támogatja a "nincs hibakereső" forgatókönyvet, lásd: Support for .NET applications.

Visual Studio 2022-ben egy .NET 6+-os alkalmazással

Ha a Visual Studio 2022-t használja és a .NET 6+-ot megcélzó alkalmazásokon dolgozik, a legtisztább és leghatékonyabb Hot Reload élmény előnyeit élvezheti.

Ebben a forgatókönyvben támogatott:

  • Blazor-alkalmazások (Kiszolgáló és WebAssembly)
  • Razor-fájlok szerkesztése a Blazorban és a normál ASP.NET Core webhelyeken
  • CSS-hot-reload
  • XAML Hot Reload
  • Hot Reload támogatás a hibakereső nélküli alkalmazások futtatásakor (a korábban részletesebben ismertetett módon)

Ha a .NET 6+-ra állítja be, a további fejlesztéseket a 2022-es Visual Studio frissítésekben és a .NET funkciósáv- és főbb kiadásokban is megkapja.

Támogatott ASP.NET Core forgatókönyvek

Az alapszintű Hot Reload-élményt számos ASP.NET forgatókönyv támogatja. A legszélesebb körben elérhető funkció a kód mögötti és más .NET osztályfájlok módosítása a legtöbb webalkalmazáshoz. Ez a funkció a Visual Studio hibakereső használata közben működik, és bárhol megtalálható, ahol korábban Hot Reload volt elérhető. További útmutatásért lásd: .NET Hot Reload támogatása az ASP.NET Core számára.

A .NET 6+-ot célzó ASP.NET Core fejlesztők számára további képességek nem érhetők el a .NET alacsonyabb verzióihoz. Ezek a képességek a következők:

  • CSHTML: Razor CSHTML-fájl szerkesztése számos típusú szerkesztést támogat.
  • Böngészőfrissítés: A Razor-fájl szerkesztésekor a böngésző automatikusan frissül a hibakeresés során végrehajtott változtatásokkal. Ez a funkció korábban csak a hibakereső nélküli alkalmazás indításakor volt elérhető.
  • CSS Hot Reload: Az alkalmazás futtatása közben módosíthatja a CSS-fájlokat, és beírás közben a rendszer azonnal alkalmazza a módosításokat a futó alkalmazásra.
  • No Debugger: Hot Reload támogatást kap, ha Visual Studio használatával indítja el a webalkalmazást hibakereső (CTRL-F5) nélkül.

Támogatott .NET módosítások

A .NET Hot Reload élményt a debugger és C# fordító (Roslyn) működteti. A Roslyn által támogatott módosítások és támogatott kódmódosítások (C# és VB) felsorolják a jelenleg támogatott módosítások típusait és a lehetséges jövőbeli fejlesztéseket.

Támogatott .NET-keretrendszer változásai

A .NET Hot Reload élményt a debugger és C# fordító működteti. A támogatott kódmódosítások (C# és VB) felsorolják a jelenleg támogatott szerkesztési típusokat és a lehetséges jövőbeli fejlesztéseket.

Nem támogatott .NET és .NET-keretrendszerprojektek

Hot Reload egyes projektkonfigurációkban nem érhető el:

  • Ha a Visual Studio-t hibakereső nélkül használja, a Hot Reload csak a .NET 6+-ot célzó .NET alkalmazásokkal működik.
  • Ha a Visual Studio hibakeresőt használja az alkalmazás futtatásához, de letiltotta Enable Hot Reload and Edit and Continue when debugging a beállításokban, a Hot Reload nem támogatott.
  • A kiadási vagy egyéni buildkonfigurációk nem támogatottak. A projektnek a Debug buildkonfigurációt kell használnia.
  • Ha F# vagy .NET natív projektet céloz meg.
  • Egyes indítási vagy fordítási optimalizálások nem támogatottak a .NET Hot Reload. Ha például a projekt hibakeresési profilja a következő módokon van konfigurálva, .NET Hot Reload nem támogatott:
    • vágása engedélyezve van a projektedhez. Nem támogatott például, ha a hibakeresési profil projektfájljában a PublishTrimmed Értéke True (Igaz) értékre van állítva.
    • ReadyToRun engedélyezve van a projekthez. Nem támogatott például, ha a hibakeresési profil projektfájljában a PublishReadyToRun Értéke True (Igaz) értékre van állítva.

További részletekért lásd nem támogatott forgatókönyveket.

Az F# nem támogatja a Hot Reload funkciót.

A Hot Reload vagy a Szerkesztés és a Folytatás nem támogatott az F#-kód hibakeresésekor. Az F#-kód szerkesztése hibakeresési munkamenetek során lehetséges, de ezeket el kell kerülni. A kódmódosítások nem lesznek alkalmazva a hibakeresési munkamenet során. Ezért a hibakeresés során az F#-kódban végzett módosítások olyan forráskódot eredményeznek, amely nem egyezik a hibakeresés alatt álló kóddal.

Hot Reload konfigurálása

A Hot Reload engedélyezéséhez, letiltásához vagy konfigurálásához lásd: Konfiguráció szerkesztése és folytatása.

Figyelmeztető üzenet

Ha a következő párbeszédpanel jelenik meg, Hot Reload újraindítás nélkül nem tudja alkalmazni az aktuális módosításokat. Választhat, hogy újraépíti az alkalmazást, és módosításokat alkalmaz (újraindítás), vagy folytatja a szerkesztést. Ha újraépíti, az összes alkalmazásállapot elveszik. Ha folytatja a szerkesztést, lehetséges, hogy további módosítások vagy javítások miatt Hot Reload újra működni fog.

Képernyőkép a Módosítások alkalmazása párbeszédpanelről.

Képernyőkép a Módosítások alkalmazása párbeszédpanelről.

Ha a Always újraépítést választja, ha a módosítások nem alkalmazhatók a párbeszédpanelen, akkor a párbeszédpanel nem jelenik meg újra az aktuális Visual Studio munkamenetben, és Visual Studio automatikusan újraépíti és újra betölti a párbeszédpanel megjelenítése helyett.

Hibaelhárítás

Ha Hot Reload nem a várt módon működik, ellenőrizze a következőket:

  • Ellenőrizze, hogy támogatott alkalmazást és forgatókönyvet futtat-e. Egyes projekttípusok, vegyes módú hibakeresés, optimalizált kód és Attach to Process forgatókönyvek nem támogatják Hot Reload. További információ: Nem támogatott forgatókönyvek.
  • Győződjön meg arról, hogy az alkalmazás Debug konfigurációt használ, és hogy a Hot Reload engedélyezve van-e Tools>Option >Debugging>.NET/C++ Hot Reload.
  • A Naplózás részletezettsége beállítása Detailed vagy Diagnostic értékre, hogy további információt kapjon a Hot Reload kimenetben.
  • Nyissa meg az Output ablakot, és a Megjelenít kimenetet résznél válassza a Hot Reload lehetőséget a diagnosztikai üzenetek áttekintéséhez.
  • Ha a hibakeresés során egy sor írásvédettként jelenik meg, lehet, hogy aktív utasítás a hívásveremen, vagy a szerkesztés újraindítást igényel.

A gyakori diagnosztikák listáját a Hot Reload és a Szerkesztés és folytatás hibaüzenetek című témakörben találja. Ha a probléma továbbra is fennáll, és a kimenet nem mutat egyértelmű okot, a A problémajelentés használatával küldjön visszajelzést a Visual Studio csapatnak.

Ha választömörítést használ a .NET Core-on, tekintse meg a response tömörítéssel kapcsolatos információkat.