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


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 fog futni.

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 lehet, amely a végfelhasználókra is hatással lehet. 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. Az 5.1.0-s verzió lesz használatban.
  3. Később a felhasználó telepíti az 5.0.3-at, és újra futtatja az alkalmazást, így az 5.0.3-at fogja használni.

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.
Ugrás a következő legkisebb elérhető alverzióra, ha a kért alverzió hiányzik. Ha a kért alverzió jelen van, akkor a rendszer a LatestPatch szabályzatot használja.
Major Menjen tovább a következő elérhető magasabb főverzióra és a legalacsonyabb alverzióra, ha a kért főverzió hiányzik. Ha a kért főverzió jelen van, akkor a rendszer a Minor szabályzatot használja.
LatestPatch Frissítés a legmagasabb javító verzióra. Ez az érték letiltja az alverziók továbbgördítését.
LatestMinor Ugrás a legmagasabb alverzióra akkor is, ha a kért alverzió már jelen van.
LatestMajor Ugrás a legmagasabb főverzióra és a legmagasabb alverzióra, még akkor is, ha a kért főverzió jelen van.
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.

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óválasztása közzétételkor történik, nem pedig futásidő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.

Az önálló telepítésekhez szükség lehet egy adott javításverzióra. 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: