Megosztás:


Válassza ki a használni kívánt .NET-verziót

Ez a cikk a .NET-eszközök, az SDK és a futtatókörnyezet által a verziók kiválasztásához használt szabályzatokat ismerteti. Ezek a szabályzatok egyensúlyt biztosítanak az alkalmazások a megadott verziók használatával történő futtatása és a fejlesztői és végfelhasználói gépek egyszerű frissítésének lehetővé tétele között. Ezek a szabályzatok a következőket teszik lehetővé:

  • A .NET egyszerű és hatékony üzembe helyezése, beleértve a biztonsági és megbízhatósági frissítéseket is.
  • Használja a legújabb eszközöket és parancsokat a cél futtatókörnyezetétől függetlenül.

A verzióválasztás a következő:

A dokumentum többi része ezt a négy forgatókönyvet vizsgálja.

Az SDK a legújabb telepített verziót használja

Az SDK-parancsok közé tartozik dotnet new és dotnet run. A .NET CLI-nek minden dotnet parancshoz SDK-verziót kell választania. Alapértelmezés szerint a számítógépen telepített legújabb SDK-t használja, még akkor is, ha:

  • A projekt a .NET-futtatókörnyezet egy korábbi verzióját célozza meg.
  • A .NET SDK legújabb verziója egy előzetes verzió.

Kihasználhatja a legújabb SDK-funkciókat és -fejlesztéseket, miközben a korábbi .NET-futtatókörnyezeti verziókat célozza. A .NET különböző futtatókörnyezeti verzióit ugyanazokkal az SDK-eszközökkel célozhatja meg.

Bizonyos esetekben előfordulhat, hogy az SDK egy adott verzióját kell használnia. Meghatározza/megadja ezt a verziót egy global.json fájlban.

global.json a fájlhierarchiában bárhol elhelyezhetők. Ön határozza meg, hogy az adott global.json mely projektekre vonatkozik a fájlrendszerbeli helye alapján. A .NET CLI egy global.json fájlt keres, amely iteratív módon navigál az útvonalon az aktuális munkakönyvtártól felfelé (ami nem feltétlenül ugyanaz, mint a projektkönyvtár). A talált első global.json fájl határozza meg a használt verziót. Ha az SDK-verzió telepítve van, a rendszer ezt a verziót használja. Ha a global.json megadott SDK nem található, a .NET CLI egyező szabályokat használja egy kompatibilis SDK kiválasztásához, vagy sikertelen lesz, ha nem található kompatibilis SDK.

Az alábbi példa a global.json szintaxist mutatja be:

{
  "sdk": {
    "version": "5.0.0"
  }
}

Az SDK-verzió kiválasztásának folyamata a következő:

  1. dotnet egy global.json fájlra keres, amely iteratív módon megfordítja az elérési utat az aktuális munkakönyvtártól felfelé.
  2. dotnet a legelső megtalált global.json által meghatározott SDK-t használja.
  3. dotnet a legújabb telepített SDK-t használja, ha nem található global.json.

Az SDK-verzió kiválasztásáról további információt az global.json áttekintő cikk Egyező szabályok és rollForward szakaszaiban talál.

Az SDK-verzió frissítése

Fontos, hogy rendszeresen frissítsen az SDK legújabb verziójára a legújabb funkciók, teljesítménybeli fejlesztések és hibajavítások bevezetése érdekében. Az SDK frissítéseinek egyszerű ellenőrzéséhez használja a dotnet sdk checkparancsot. Továbbá, ha egy adott verziót választ ki a global.jsonhasználatával, fontolja meg egy olyan eszközt, mint a Dependabot, amely automatikusan frissíti a rögzített SDK-verziót, amint az új verziók elérhetővé válnak.

A cél-keretrendszer monikerei a buildelési idő API-jait határozzák meg

A projektet az API-k alapján építi fel, amelyeket egy cél keretrendszer moniker (TFM) határoz meg. A projektfájlban adja meg a célkeretrendszer. Állítsa be a TargetFramework elemet a projektfájlban az alábbi példában látható módon:

<TargetFramework>net8.0</TargetFramework>

A projektjét több TFM-re is megépítheti. A kódtárak esetében gyakoribb több cél keretrendszer beállítása, de alkalmazásokkal is elvégezhető. Meg kell adnia egy TargetFrameworks tulajdonságot (TargetFrameworktöbbes szám alakja). A cél-keretrendszerek pontosvesszőkkel vannak tagoltak az alábbi példában látható módon:

<TargetFrameworks>net8.0;net47</TargetFrameworks>

Egy adott SDK egy rögzített keretrendszerkészletet támogat, amely megfelel az általa üzemeltetett futtatókörnyezet célkeretének. A .NET 8 SDK például tartalmazza a .NET 8 futtatókörnyezetet, amely a net8.0 cél keretrendszer implementációja. A .NET 8 SDK támogatja net7.0, net6.0és net5.0, de nem net9.0 (vagy magasabb). Telepítse a .NET 9 SDK-t a net9.0építéséhez.

.NET Standard

A .NET Standard a .NET különböző implementációi által megosztott API-felületet célozta meg. A .NET 5 kiadásától kezdve, amely maga az API-szabvány, a .NET Standardnak kevés relevanciája van, kivéve egy forgatókönyvet: a .NET Standard akkor hasznos, ha a .NET-keretrendszert és a .NET-keretrendszert is meg szeretné célozni. A .NET 5 az összes .NET Standard verziót implementálja.

További információ: .NET 5 és .NET Standard.

Keretrendszerfüggő alkalmazások előre gurítás

Ha egy alkalmazást a forráskódból futtatsz dotnet run, egy keretrendszerfüggő üzembe helyezésseldotnet myapp.dll, vagy egy keretrendszerfüggő futtatható fájlbólmyapp.exe, akkor a végrehajtható fájl dotnet az alkalmazás kiszolgálója.

A házigazda a számítógépen telepített legújabb javításverziót választja ki. Ha például net5.0 adott meg a projektfájlban, és 5.0.2 a legújabb telepített .NET-futtatókörnyezet, a rendszer a 5.0.2 futtatókörnyezetet használja.

Ha nem található elfogadható 5.0.* verzió, a rendszer új 5.* verziót használ. Ha például net5.0 adott meg, és csak 5.1.0 van telepítve, az alkalmazás a 5.1.0 futtatókörnyezet használatával fut. Ezt a viselkedést "alverzió-előregördítésnek" nevezzük. Az alacsonyabb verziók szintén nem lesznek figyelembe véve. Ha nincs elfogadható futtatókörnyezet telepítve, az alkalmazás nem fut.

Néhány használati példa bemutatja a viselkedést, ha az 5.0-t célozza meg:

  • ✔️ Az 5.0 van megadva. Az 5.0.3 a legmagasabb telepített javításverzió. Az 5.0.3-at használja.
  • ❌ 5.0 lett megadva. Nincs telepítve 5.0.* verzió. A 3.1.1 a legmagasabb telepített futtatókörnyezet. Megjelenik egy hibaüzenet.
  • ✔️ Az 5.0 van megadva. Nincs telepítve 5.0.* verzió. Az 5.1.0 a legmagasabb telepített futtatókörnyezeti verzió. A rendszer az 5.1.0-s verziót használja.
  • ❌ 3.0 van specifikálva. Nincsenek telepítve 3.x-verziók. Az 5.0.0 a legmagasabb telepített futtatókörnyezet. Megjelenik egy hibaüzenet.

Az alverziók továbbgördítésének egy mellékhatása van, amely hatással lehet a végfelhasználókra. Fontolja meg a következő forgatókönyvet:

  1. Az alkalmazás megadja, hogy az 5.0-ra van szükség.
  2. Futtatáskor az 5.0.* verzió nincs telepítve, az 5.1.0 azonban az. A rendszer az 5.1.0-s verziót használja.
  3. Később a felhasználó telepíti az 5.0.3-at, és újra futtatja az alkalmazást, és az 5.0.3-at használja.

Lehetséges, hogy az 5.0.3 és az 5.1.0 eltérően viselkedik, különösen olyan helyzetekben, mint a bináris adatok szerializálása.

A roll-forward viselkedésének szabályozása

Az alapértelmezett roll-forward viselkedés felülbírálása előtt ismerkedjen meg a .NET-futtatókörnyezetek kompatibilitásiszintjével.

Az alkalmazások roll-forward viselkedése négy különböző módon konfigurálható:

  1. Projektszintű beállítás a <RollForward> tulajdonság beállításával:

    <PropertyGroup>
      <RollForward>LatestMinor</RollForward>
    </PropertyGroup>
    
  2. A *.runtimeconfig.json fájl.

    Ez a fájl az alkalmazás lefordításakor jön létre. Ha a <RollForward> tulajdonság be van állítva a projektben, a *.runtimeconfig.json fájlban lesz reprodukálva rollForward beállításként. A felhasználók szerkeszthetik ezt a fájlt az alkalmazás viselkedésének módosításához.

    {
      "runtimeOptions": {
        "tfm": "net5.0",
        "rollForward": "LatestMinor",
        "framework": {
          "name": "Microsoft.NETCore.App",
          "version": "5.0.0"
        }
      }
    }
    
  3. A dotnet parancs --roll-forward <value> tulajdonsága.

    Alkalmazás futtatásakor a parancssoron keresztül szabályozhatja a roll-forward viselkedést:

    dotnet run --roll-forward LatestMinor
    dotnet myapp.dll --roll-forward LatestMinor
    myapp.exe --roll-forward LatestMinor
    
  4. A DOTNET_ROLL_FORWARD környezeti változó.

Elsőbbség

Az előregördítési viselkedést az alkalmazás futtatásakor a következő sorrend határozza meg, a számozott elemek magasabb sorrendben jelennek meg az alacsonyabb számozott elemekkel szemben:

  1. Először a *.runtimeconfig.json konfigurációs fájl kiértékelése történik.
  2. Ezután a DOTNET_ROLL_FORWARD környezeti változót veszi figyelembe, felülírva az előző ellenőrzést.
  3. Végül a futó alkalmazásnak átadott --roll-forward paraméter felülír minden mást.

Értékrend

A roll-forward beállítást azonban az alábbi értékek egyikével állíthatja be:

Érték Leírás
Minor Alapértelmezett, ha nincs megadva.
Ha a kért alverzió hiányzik, lépjen tovább a következő elérhető magasabb alverzióra (és az alverzión belül a legmagasabb elérhető javításverzióra). Ha a kért alverzió jelen van, akkor a rendszer a LatestPatch szabályzatot használja.
Major Ha a kért főverzió hiányzik, lépjen tovább a következő elérhető magasabb főverzióra (a legalacsonyabb elérhető alverzióra és az alverzión belül a legmagasabb elérhető javításverzióra). Ha a kért főverzió jelen van, akkor a rendszer a Minor szabályzatot használja.
LatestPatch Ugrás a kért fő- és alverziókhoz elérhető legmagasabb javításverzióra. Ez az érték letiltja az alverziók továbbgördítését.
LatestMinor Ugrás a kért főverzióhoz elérhető legmagasabb alverzióra (és az alverzión belül a legmagasabb elérhető javításverzióra), még akkor is, ha a kért alverzió jelen van.
LatestMajor Haladás a legerősebb elérhető főverzióra (és a legerősebb elérhető alverzióra és javítási verzióra az adott főverzióban), még akkor is, ha a kért főverzió elérhető.
Disable Ne frissítsen tovább, csak a megadott verzióhoz kössön. Ez a szabályzat nem ajánlott általános használatra, mivel letiltja a legújabb javításokra való visszaállítás lehetőségét. Ez az érték csak teszteléshez ajánlott.

Tegyük fel például, hogy egy alkalmazás kéri a verziót8.0.0, míg a helyileg elérhető verziók a 8.2.0, 8.2.3, 8.4.5, 9.0.09.0.69.7.8. Ezután a feloldott verzió minden esetben a következő:

Érték Megoldott verzió Megoldott verzió, ha az 8.0.1 is elérhető lenne
Minor 8.2.3 8.0.1
Major 8.2.3 8.0.1
LatestPatch (sikertelen) 8.0.1
LatestMinor 8.4.5 8.4.5
LatestMajor 9.7.8 9.7.8
Disable (sikertelen) (sikertelen)

Az önálló telepítések tartalmazzák a kiválasztott futtatókörnyezetet.

Az alkalmazást közzéteheti önálló futtatható terjesztésként. Ez a módszer a .NET-futtatókörnyezetet és a kódtárakat köti össze az alkalmazással. Az önálló üzembe helyezéseknek nincs függőségük a futtatókörnyezetektől. A futtatókörnyezet verziójának kiválasztása közzétételkor történik, nem futási időben.

A visszaállítási esemény, amely a közzétételkor következik be, kiválasztja az adott futtatókörnyezet-család legújabb patch-verzióját. Például dotnet publish a .NET 5.0.3-at választja, ha az a .NET 5 futtatókörnyezetcsalád legújabb javításverziója. A cél keretrendszer (beleértve a legújabb telepített biztonsági javításokat is) az alkalmazással van csomagolva.

Hiba történik, ha az alkalmazáshoz megadott minimális verzió nem teljesül. dotnet publish a legújabb futtatókörnyezeti javítási verzióhoz kapcsolódik egy adott major.minor verziócsaládon belül. dotnet publish nem támogatja a dotnet runroll-forward szemantikáját. A javításokról és az önálló telepítésekről további információt a .NET-alkalmazások üzembe helyezésének futtatókörnyezeti javítások kiválasztásáról című cikkben talál.

Előfordulhat, hogy az önálló központi telepítésekhez egy adott javításverzióra van szükség. A projektfájlban felülbírálhatja a futásidejű javítás minimális verzióját (magasabb vagy alacsonyabb verzióra) az alábbi példában látható módon:

<PropertyGroup>
  <RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>

A RuntimeFrameworkVersion elem felülírja az alapértelmezett verziószabályzatot. Önálló üzemelő példányok esetén a RuntimeFrameworkVersion határozza meg a futtatókörnyezeti keretrendszer pontos verzióját. A keretrendszerfüggő alkalmazások esetében a RuntimeFrameworkVersion határozza meg a minimális szükséges futtatókörnyezeti keretrendszerverziót.

Lásd még: