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ő:
- SDK-parancs futtatásakor az SDK a legújabb telepített verziót használja.
- Szerelvény létrehozásakor a cél keretrendszerbeli monikerek határozzák meg a buildelési idő API-kat.
- .NET-alkalmazás futtatásakor a keretrendszer függő alkalmazásai továbbgördülnek.
- Önálló alkalmazás közzétételekor a saját üzemeltetésű környezetek tartalmazzák a kiválasztott futtatókörnyezetet.
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ő:
dotnet
olyan 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é.dotnet
az első global.json megadott SDK-t használja.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.0
a , 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.dll
vagy egy keretrendszerfüggő végrehajtható fájlból myapp.exe
futtat, 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:
- Az alkalmazás megadja, hogy az 5.0-ra van szükség.
- Futtatáskor az 5.0.* verzió nincs telepítve, az 5.1.0 azonban az. Az 5.1.0-s verzió lesz használatban.
- 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ó:
Projektszintű beállítás a
<RollForward>
tulajdonság beállításával:<PropertyGroup> <RollForward>LatestMinor</RollForward> </PropertyGroup>
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éntrollForward
. 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" } } }
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
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:
- Először kiértékeli a
*.runtimeconfig.json
konfigurációs fájlt. - Ezután a
DOTNET_ROLL_FORWARD
környezeti változót veszi figyelembe, felülírva az előző ellenőrzést. - 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.