Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Nyisson meg egy projektet egy támogatott alkalmazástípus alapján. Lásd: .NET és C++ támogatott alkalmazások.
Indítsa el az alkalmazást a csatolt hibakeresővel az F5 vagy , ha támogatott, Ctrl+F5.
Nyisson meg egy kódfájlt, és módosítsa a kódot.
Alkalmazza a kódmódosításokat a Hot Reload
gombbal, vagy nyomja le a ALT+F10 billentyűt.
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:
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 debugginga 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
Debugbuildkonfigurá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.
-
vágása engedélyezve van a projektedhez. Nem támogatott például, ha a hibakeresési profil projektfájljában a
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.
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
Debugkonfigurá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.