Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltásá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ő:
-
dotnetegy 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é. -
dotneta legelső megtalált global.json által meghatározott SDK-t használja. -
dotneta 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:
- 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. A rendszer az 5.1.0-s verziót használja.
- 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ó:
Projektszintű beállítás a
<RollForward>tulajdonság beállításával:<PropertyGroup> <RollForward>LatestMinor</RollForward> </PropertyGroup>A
*.runtimeconfig.jsonfá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.jsonfájlban lesz reprodukálvarollForwardbeá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
dotnetparancs--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 LatestMinorA
DOTNET_ROLL_FORWARDkö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.jsonkonfigurációs fájl kiértékelése történik. - Ezután a
DOTNET_ROLL_FORWARDkörnyezeti változót veszi figyelembe, felülírva az előző ellenőrzést. - Végül a futó alkalmazásnak átadott
--roll-forwardparamé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:
- 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.