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é tartoznak 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.

Ritkán előfordulhat, hogy az SDK egy korábbi verzióját kell használnia. Ezt a verziót egy global.json fájlban adhatja meg. A "legújabb használat" szabályzat azt jelenti, hogy csak a legújabb telepített verziónál korábbi .NET SDK-verzió megadásához használja a global.json .

global.json bárhol elhelyezhetők a fájlhierarchiában. Ön határozza meg, hogy az adott global.json mely projektekre vonatkozik a fájlrendszerben való helye alapján. A .NET CLI egy global.json fájlt keres, amely az aktuális munkakönyvtártól felfelé halad felfelé (ami nem feltétlenül ugyanaz, mint a projektkönyvtár). A talált első global.json fájl megadja 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ályokkal választ ki egy kompatibilis SDK-t, vagy sikertelen, ha nem található.

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. dotnetolyan global.json fájlt keres, amely iteratív módon megfordítja az elérési utat az aktuális munkakönyvtártól felfelé.
  2. dotnet az első global.json megadott 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ával kapcsolatos további információkért tekintse meg a global.json áttekintési cikk Egyező szabályok és rollForward szakaszát.

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

A projektet egy cél-keretrendszer-monikerben (TFM) definiált API-k alapján hozhatja létre. A projektfájlban meg kell adnia a cél keretrendszert . Állítsa be az TargetFramework elemet a projektfájlban az alábbi példában látható módon:

<TargetFramework>net8.0</TargetFramework>

A projektet több TFM-hez is létrehozhatja. 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 tulajdonságot TargetFrameworks (többes szám).TargetFramework 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.0a , net6.0és net5.0, de nem net9.0 (vagy magasabb). Telepítse a .NET 9 SDK-t a buildeléshez net9.0.

.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-et és a .NET-keretrendszer 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 roll-forward

Ha egy alkalmazást a forrásbóldotnet run, egy keretrendszerfüggő üzembe helyezésből dotnet myapp.dllvagy egy keretrendszerfüggő végrehajtható fájlból myapp.exefuttat, akkor a dotnet futtatható az alkalmazás gazdagépe.

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

Ha nem található elfogadható 5.0.* verzió, a rendszer új 5.* verziót használ. Ha például megadta net5.0 , és csak 5.1.0 telepítve van, 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.
  • ❌ Az 5.0 van 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.
  • ❌ A 3.0 meg van adva. 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 egyetlen mellékhatása lehet, amely hatással lehet a végfelhasználókra. Vegyük például a következő esetet:

  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 szabályozása

Az alapértelmezett roll-forward viselkedés felülírása előtt ismerkedjen meg a .NET-futtatókörnyezet kompatibilitásának szintjé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 lett állítva a projektben, a fájlban *.runtimeconfig.json lesz reprodukálva beállításként rollForward . 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 tulajdonsága --roll-forward <value> .

    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ó.

Prioritás

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 kiértékeli a *.runtimeconfig.json konfigurációs fájlt.
  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 paraméterek --roll-forward felülbírálnak minden mást.

Értékek

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 legalacsonyabb alverzióra, ha a kért alverzió hiányzik. Ha a kért alverzió jelen van, a rendszer a LatestPatch szabályzatot használja.
Major Lépjen tovább a következő elérhető magasabb főverzióra és a legalacsonyabb alverzióra, ha szükséges, a főverzió hiányzik. Ha a kért főverzió jelen van, akkor a rendszer a Minor szabályzatot használja.
LatestPatch Ugrás a legmagasabb javításverzióra. Ez az érték letiltja az alverziók továbbgördítését.
LatestMinor Ugrás a legmagasabb alverzióra, még akkor is, ha a kért alverzió 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 lépjen előre, csak a megadott verzióhoz kötést. 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ó üzemelő példányok közé tartozik a kiválasztott futtatókörnyezet

Az alkalmazásokat közzéteheti önálló disztribúcióként. Ez a módszer a .NET-futtatókörnyezetet és a kódtárakat köti össze az alkalmazással. Az önálló üzemelő példányok nem függenek a futtatókörnyezetekhez. A futtatókörnyezet verzióválasztása közzétételkor történik, nem pedig futásidőben.

A közzétételkor bekövetkező visszaállítási esemény az adott futtatókörnyezetcsalád legújabb patch-verzióját választja ki. Például dotnet publish a .NET 5.0.3-at választja, ha az a .NET 5 futtatókörnyezeti csalá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ás verziójához kapcsolódik (egy adott major.minor verziócsaládon belül). dotnet publish nem támogatja a roll-forward szemantikát dotnet run. A javításokkal és az önálló telepítésekkel kapcsolatos további információkért tekintse meg a futtatókörnyezeti javítások kiválasztásáról szóló cikket a .NET-alkalmazások üzembe helyezésében.

Előfordulhat, hogy a saját üzemeltetéshez 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>

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

Lásd még