Megosztás a következőn keresztül:


Támogatott kódmódosítások (C# és Visual Basic)

A korábban Szerkesztés és Folytatás néven ismert gyakori újratöltési mechanizmus kezeli a metódustörzseken belüli kódmódosítások többségét. A legtöbb, metódustesten kívüli módosítás és a metódustesteken belüli néhány módosítás azonban nem alkalmazható a hibakeresés során. A nem támogatott módosítások alkalmazásához le kell állítania a hibakeresést, és újra kell indítania a kód egy új verziójával.

A Szerkesztés és folytatás mechanizmus kezeli a legtöbb kódmódosítást a metódustesteken belül. A legtöbb, metódustesten kívüli módosítás és a metódustesteken belüli néhány módosítás azonban nem alkalmazható a hibakeresés során. A nem támogatott módosítások alkalmazásához le kell állítania a hibakeresést, és újra kell indítania a kód egy új verziójával.

Támogatott kódmódosítások

Az alábbi táblázat a C# és a Visual Basic kód módosításait mutatja be a hibakeresési munkamenet során a munkamenet újraindítása nélkül.

Nyelvi elem vagy szolgáltatás Támogatott szerkesztési művelet Korlátozások
Típusok Metódusok, mezők, konstruktorok és egyebek hozzáadása Igen
Iterátorok Hozzáadás vagy módosítás Nem
aszinkron/várakozási kifejezések Hozzáadás vagy módosítás Igen
Dinamikus objektumok Hozzáadás vagy módosítás Nem
lambda kifejezések Hozzáadás vagy módosítás Igen
LINQ-kifejezések Hozzáadás vagy módosítás Megegyezik a lambdakifejezésekkel
Általános Hozzáadás vagy módosítás Igen
Nyelvi elem vagy szolgáltatás Támogatott szerkesztési művelet Korlátozások
Típusok Metódusok, mezők, konstruktorok és egyebek hozzáadása Igen
Iterátorok Hozzáadás vagy módosítás Nem
aszinkron/várakozási kifejezések Hozzáadás vagy módosítás Igen
Dinamikus objektumok Hozzáadás vagy módosítás Nem
lambda kifejezések Hozzáadás vagy módosítás Igen
LINQ-kifejezések Hozzáadás vagy módosítás Megegyezik a lambdakifejezésekkel

Jegyzet

Az Editálás és Folytatás általában támogatja az újabb nyelvi jellemzőket, például a karakterlánc-interpolációt és a nullával feltételes operátorokat. A legfrissebb információkért tekintse meg az Enc által támogatott szerkesztések lapot. A .NET-keretrendszer esetében a támogatott funkciók a felsorolt funkciók részhalmazai, és a fordító verziójától függenek.

.NET 6+ fejlesztések

A .NET 6+ és a Visual Studio 2022 és újabb verzióinak fejlesztései további szerkesztési típusokat támogatnak, amelyek túlmutatnak a Visual Studio régebbi verzióiban eredetileg lehetséges módosításokon. Ezek a fejlesztések elérhetők mind a Hot Reload, mind a Szerkesztés és Folytatás funkcióban.

A .NET 6+ Hot Reload élményt a Szerkesztés és Folytatás mechanizmus és a Roslyn működteti. Támogatott szerkesztések felsorolja a Roslyn által jelenleg támogatott szerkesztési típusokat és a lehetséges jövőbeli fejlesztéseket.

Nem támogatott kódmódosítások

A hibakeresési munkamenet során a következő módosítások nem alkalmazhatók a C# és a Visual Basic kódra.

  • Az aktuális kijelentés vagy bármely más aktív kijelentés módosítása.

    Az aktív utasítás a hívási hierarchiában szereplő függvényben található bármely utasítás, amelyet az aktuális utasítás eléréséhez hívtak meg.

    Az aktuális utasítás sárga háttéren jelenik meg a forrásablakban. További aktív utasítások árnyékolt háttéren jelennek meg, és írásvédettek. Ezek az alapértelmezett színek módosíthatók a Beállítások párbeszédpanelen.

  • A kód nyelvi elemenkénti nem támogatott módosításai az alábbi táblázatban leírtak szerint.

    A .NET 6+ és a Visual Studio 2022 esetében a jelenleg támogatott és nem támogatott szerkesztési típusok támogatott szerkesztések című témakörben olvashat.

    Nyelvi elem vagy szolgáltatás Nem támogatott szerkesztési művelet
    Minden kódelem Átnevezés
    Névterek Hozzáad
    Névterek, típusok, tagok Töröl
    Felületek Módosít
    Típusok Absztrakt vagy virtuális tag hozzáadása, felülírás hozzáadása (lásd a részleteket)
    Típusok Destruktor hozzáadása
    Tagok – Beágyazott interoptípusra hivatkozó tag módosítása
    – Statikus tag módosítása, miután azt már hozzáférték a kód végrehajtásával
    Tagok (Visual Basic) – Tag módosítása On Error vagy Resume utasítással
    – Egy tag módosítása, amely tartalmaz egy összesítést, csoportosítást, egyszerű összekapcsolást vagy csoportosított LINQ lekérdezési záradékot
    Módszerek – Aláírások módosítása
    - Az absztrakt metódus nem absztraktként viselkedik, ha metódustörzset adunk hozzá
    - Metódus törzsének törlése
    Attribútumok Hozzáadás vagy módosítás
    Események vagy tulajdonságok Típusparaméter, alaptípus, delegálás típusa vagy visszatérési típus módosítása
    Operátorok vagy indexelők Típusparaméter, alaptípus, delegálás típusa vagy visszatérési típus módosítása
    fogási blokkok Módosítja, ha aktív utasítást tartalmaz
    try-catch-finally blokkok Módosítja, ha aktív utasítást tartalmaz
    állítások használata Hozzáad
    aszinkron metódusok/lambda-kifejezések Aszinkron metódus/lambda módosítása egy projektben, amely a .NET Framework 4-et és alacsonyabbat céloz (lásd részletek)
    Iterátorok Iterátor módosítása a .NET-keretrendszer 4-et és korábbi verzióit célzó projektben (lásd részletek)
    Nyelvi elem vagy szolgáltatás Nem támogatott szerkesztési művelet
    Minden kódelem Átnevezés
    Névterek Hozzáad
    Névterek, típusok, tagok Töröl
    Általános Hozzáadás vagy módosítás
    Felületek Módosít
    Típusok Absztrakt vagy virtuális tag hozzáadása, felülírás hozzáadása (lásd a részleteket)
    Típusok Destruktor hozzáadása
    Tagok – Beágyazott interoptípusra hivatkozó tag módosítása
    – Statikus tag módosítása, miután azt már hozzáférték a kód végrehajtásával
    Tagok (Visual Basic) – Tag módosítása On Error vagy Resume utasítással
    – Egy tag módosítása, amely tartalmaz egy összesítést, csoportosítást, egyszerű összekapcsolást vagy csoportosított LINQ lekérdezési záradékot
    Módszerek – Aláírások módosítása
    - Az absztrakt metódus nem absztraktként viselkedik, ha metódustörzset adunk hozzá
    - Metódus törzsének törlése
    Attribútumok Hozzáadás vagy módosítás
    Események vagy tulajdonságok Típusparaméter, alaptípus, delegálás típusa vagy visszatérési típus módosítása
    Operátorok vagy indexelők Típusparaméter, alaptípus, delegálás típusa vagy visszatérési típus módosítása
    fogási blokkok Módosítja, ha aktív utasítást tartalmaz
    try-catch-finally blokkok Módosítja, ha aktív utasítást tartalmaz
    állítások használata Hozzáad
    aszinkron metódusok/lambda-kifejezések Aszinkron metódus/lambda módosítása egy projektben, amely a .NET Framework 4-et és alacsonyabbat céloz (lásd részletek)
    Iterátorok Iterátor módosítása a .NET-keretrendszer 4-et és korábbi verzióit célzó projektben (lásd részletek)

Nem biztonságos kód

A nem biztonságos kód módosításaira ugyanazok a korlátozások vonatkoznak, mint a biztonságos kód módosításaira, egyetlen további korlátozással: A Szerkesztés és folytatás nem támogatja a nem biztonságos kód módosításait, amelyek a stackalloc operátort tartalmazó metóduson belül lépnek ki.

Alkalmazástámogatás

A támogatott alkalmazások a következők:

  • UWP-alkalmazások Windows 10 vagy Windows 11 rendszerben
  • x86-os és x64-es alkalmazások, amelyek a .NET-keretrendszer 4.6 asztali vagy újabb verzióit célozzák (a .NET-keretrendszer csak asztali verzió)

A .NET 6-os és újabb verzióiban a szerkesztés a következő fájltípusok esetében támogatott:

  • .cshtml
  • .borotva

Nem támogatott alkalmazások, platformok és műveletek

A nem támogatott alkalmazások vagy platformok a következők:

  • F#
  • .NET Native
  • Silverlight 5
  • Windows 8.1
  • Xamarin.Forms (iOS és Android)

A ASP.NET és a ASP.NET Core esetében a szerkesztés nem támogatott az alábbi fájltípusok esetében:

  • .aspx
  • .ascx
  • .aspx
  • .ascx
  • .cshtml
  • .borotva

Nem támogatott forgatókönyvek

A szerkesztés és a folytatás nem érhető el a következő hibakeresési forgatókönyvekben:

  • Vegyes módú (natív/felügyelt) hibakeresés.

  • Hibakeresés az Arm64-en a .NET 7 vagy újabb verziójának megcélzása nélkül.

  • Hibakeresés a COR_ENABLE_PROFILING környezeti változókészlettel.

  • Alkalmazás hibakeresése folyamathoz csatolással (Hibakeresés > Folyamathoz csatolás) az alkalmazás futtatása helyett a Hibakeresés menü Start parancsának választásával. Ha a szerkesztést és a folytatást egy folyamathoz való csatoláskor szeretné használni, a COMPLUS_ForceENC környezeti változót be kell állítani a folyamat elindítása előtt (set COMPLUS_ForceENC=1).

  • Hibakeresés nemdeterminista (például időalapú) szerelvényverziókkal. Ha a Szerkesztés és a Folytatás lehetőséget szeretné használni, fontolja meg a verzió beállítását csak a Release (vagy CI) buildekben, és tartsa a verziót a hibakeresési buildek állandójában.

  • Optimalizált kód hibakeresése.

  • SQL-hibakeresés.

  • Memóriaképfájl hibakeresése.

  • Beágyazott futtatókörnyezeti alkalmazás hibakeresése.

  • A kód egy régi verziójának hibakeresése, miután egy új verzió összeállítása sikertelen volt a buildelési hibák miatt.