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 célkeretrendszer monikerek határozzák meg az építés idejének API-jait.
- .NET-alkalmazás futtatásakor cél keretrendszerfüggő alkalmazások.
- Ha egy önálló alkalmazást tesz közzé, a önálló telepítések 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é 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ő:
-
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é. -
dotnet
a legelső megtalált global.json által meghatározott 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á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 check
parancsot. 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 (TargetFramework
tö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:
- 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é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ó:
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 van állítva a projektben, a*.runtimeconfig.json
fájlban lesz reprodukálvarollForward
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" } } }
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
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:
- Először a
*.runtimeconfig.json
konfigurációs fájl kiértékelése történik. - 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
--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 run
roll-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:
- Dependabot által támogatott ökoszisztémák és adattárak.
- .NET-letöltése és telepítése.
- Annak ellenőrzése, hogy a .NET már telepítve van-e.
- .NET-futtatókörnyezet és SDKeltávolítása.