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


Az Azure Data Lake Analytics a .NET-keretrendszer 4.7.2-s verzióra frissít

Fontos

Az Azure Data Lake Analytics 2024. február 29-én megszűnt. További információ ezzel a bejelentéssel.

Az adatelemzéshez a szervezet használhatja a Azure Synapse Analyticset vagy a Microsoft Fabricet.

Az Azure Data Lake Analytics alapértelmezett futtatókörnyezete .NET-keretrendszer 4.5.2-s verzióról .NET-keretrendszer 4.7.2-s verzióra frissül. Ez a módosítás kis kockázatot jelent a módosítások megszakítására, ha az U-SQL-kód egyéni szerelvényeket használ, és ezek az egyéni szerelvények .NET-kódtárakat használnak.

Ez a frissítés a .NET-keretrendszer 4.5.2-es verzióról a 4.7.2-es verzióra azt jelenti, hogy az U-SQL-futtatókörnyezetben (az alapértelmezett futtatókörnyezetben) üzembe helyezett .NET-keretrendszer mostantól mindig 4.7.2 lesz. A .NET-keretrendszer verziókhoz nincs egymás melletti beállítás.

A .NET-keretrendszer 4.7.2-es verzióra való frissítés befejezése után a rendszer felügyelt kódja 4.7.2-es verzióként fog futni, a felhasználó által biztosított kódtárak, például az U-SQL egyéni szerelvények a szerelvény által létrehozott verziónak megfelelő visszamenőlegesen kompatibilis módban fognak futni.

  • Ha a szerelvény DLL-jeit a 4.5.2-es verzióhoz hozza létre, az üzembe helyezett keretrendszer 4.5.2-es kódtárként kezeli őket, és (néhány kivétellel) 4.5.2 szemantikát biztosít.
  • Mostantól használhat olyan U-SQL egyéni szerelvényeket, amelyek a 4.7.2-es verziójú funkciókat használják, ha a .NET-keretrendszer 4.7.2-es verziót célozza.

A .NET-keretrendszer 4.7.2-es verziójára való frissítés miatt előfordulhat, hogy a .NET-alapú egyéni szerelvényeket használó U-SQL-feladatok kompatibilitástörő változásokat vezetnek be. Javasoljuk, hogy az alábbi eljárással ellenőrizze a visszamenőleges kompatibilitással kapcsolatos problémákat.

Visszamenőleges kompatibilitási problémák keresése

A .NET-kódon futó .NET-kompatibilitási ellenőrzéseknek az U-SQL egyéni szerelvényekben való futtatásával ellenőrizze a visszamenőleges kompatibilitás kompatibilitási hibáinak lehetőségét.

Megjegyzés

Az eszköz nem észleli a tényleges törési változásokat. Csak a .NET API-kat azonosítja, amelyek (bizonyos bemenetek esetén) problémákat okozhatnak. Ha értesítést kap egy problémáról, előfordulhat, hogy a kód továbbra is rendben van, de további részleteket is meg kell adnia.

  1. Futtassa a visszamenőleges kompatibilitás-ellenőrzőt a .NET-DLL-eken a következővel:
    1. A Visual Studio-bővítmény használata a .NET Portability Analyzer Visual Studio-bővítményben
    2. Az önálló eszköz letöltése és használata a GitHub dotnetapiportból. Az önálló eszköz futtatására vonatkozó utasítások a GitHub dotnetapiport kompatibilitástörő módosításainál találhatók
    3. A 4.7.2-hez. kompatibilitás, azonosítja a read isRetargeting == True lehetséges problémákat.
  2. Ha az eszköz azt jelzi, hogy a kódra hatással lehet-e bármely lehetséges visszalépési inkompatibilitás (néhány gyakori példa az inkompatibilitásokra az alábbiakban látható), akkor a
    1. A kód elemzése és annak azonosítása, hogy a kód átad-e értékeket az érintett API-knak
    2. Futtasson egy futtatókörnyezet-ellenőrzést. A futtatókörnyezet üzembe helyezése nem történik meg egymás mellett az ADLA-ban. A frissítés előtt futtatási ellenőrzést végezhet a VisualStudio helyi futtatásával egy helyi .NET-keretrendszer 4.7.2-vel egy reprezentatív adatkészleten.
  3. Ha valóban hatással van Önre a visszamenőleges kompatibilitás, végezze el a javításhoz szükséges lépéseket (például az adatok vagy a kódlogika javítását).

A legtöbb esetben nem érintheti a visszamenőleges kompatibilitás.

Idővonal

Az új futtatókörnyezet üzembe helyezését itt, a futtatókörnyezet hibaelhárításával ellenőrizheti, és megnézheti a korábbi sikeres feladatokat.

Mi a teendő, ha nem tudom időben áttekinteni a kódot?

A feladatot elküldheti a régi futtatókörnyezeti verzióra (amely a 4.5.2-es verziót célozza), azonban a .NET-keretrendszer egymás melletti képességek hiánya miatt továbbra is csak 4.5.2-es kompatibilitási módban fog futni. Ennek a viselkedésnek köszönhetően továbbra is előfordulhatnak a visszamenőleges kompatibilitással kapcsolatos problémák.

Melyek a leggyakoribb visszamenőleges kompatibilitási problémák?

Az ellenőrző által valószínűleg azonosított leggyakoribb visszalépési inkompatibilitások a következők (ezt a listát a saját belső ADLA-feladatainkon futtatva hoztuk létre), amelyek hatással vannak a kódtárakra (vegye figyelembe, hogy a kódtárakat csak közvetve hívhatja meg, ezért fontos, hogy megtegye az 1. szükséges műveletet a feladatok hatásának ellenőrzéséhez), valamint a lehetséges megoldási műveleteket. Megjegyzés: Szinte minden esetben a saját munkánk, a figyelmeztetések kiderült, hogy hamis pozitívak, mert a legmegszakadásosabb változások szűk természete.

  • Az IAsyncResult.CompletedSynchronously tulajdonságnak helyesnek kell lennie ahhoz, hogy az eredményül kapott feladat befejeződjön

    • A TaskFactory.FromAsync hívásakor az IAsyncResult.CompletedSynchronously tulajdonság implementációjának helyesnek kell lennie ahhoz, hogy az eredményül kapott feladat befejeződjön. Vagyis a tulajdonságnak igaz értéket kell visszaadnia, ha és csak akkor, ha az implementáció szinkronban fejeződött be. Korábban a tulajdonságot nem ellenőrizték.
    • Érintett kódtárak: mscorlib, System.Threading.Tasks
    • Javasolt művelet: Győződjön meg arról, hogy a TaskFactory.FromAsync helyesen ad vissza igaz értéket
  • A DataObject.GetData mostantól UTF-8 formátumban kéri le az adatokat

    • A .NET-keretrendszer 4-et megcélozó vagy a .NET-keretrendszer 4.5.1-ben vagy korábbi verzióiban futó alkalmazások esetében a DataObject.GetData a HTML-formátumú adatokat ASCII-sztringként kéri le. Ennek eredményeképpen a nem ASCII-karaktereket (a 0x7F-nél nagyobb ASCII-kóddal rendelkező karaktereket) két véletlenszerű karakter jelöli.#N##N#For az .NET-keretrendszer 4.5-ös vagy újabb verzióját megcélzó és a 4.5.2-es DataObject.GetData .NET-keretrendszer futtatott alkalmazások UTF-8 formátumban kérik le a HTML-formátumú adatokat, amelyek a 0x7F-nál nagyobb karaktereket jelölnek.
    • Érintett kódtárak: Glo
    • Javasolt művelet: Győződjön meg arról, hogy a lekért adatok a kívánt formátumot használják
  • Az XmlWriter érvénytelen helyettesítő párokat dob

    • A .NET-keretrendszer 4.5.2-es vagy korábbi verzióit célzó alkalmazások esetében a kivétel-tartalék kezeléssel érvénytelen helyettesítő pár írása nem mindig jelez kivételt. A .NET-keretrendszer 4.6-ot megcélzó alkalmazások esetében az érvénytelen helyettesítő pár írására tett kísérlet egy ArgumentException.
    • Érintett kódtárak: System.Xml, System.Xml. Olvasógép
    • Javasolt művelet: Győződjön meg arról, hogy nem ír érvénytelen helyettesítő párt, amely argumentumkivételt okoz
  • A HtmlTextWriter nem jeleníti meg <br/> megfelelően az elemet

    • A .NET-keretrendszer 4.6-os verziójától kezdődően a hívás HtmlTextWriter.RenderBeginTag() és HtmlTextWriter.RenderEndTag() az <BR /> elem helyesen csak egyet <BR /> szúr be (kettő helyett)
    • Érintett kódtárak: System.Web
    • Javasolt művelet: Győződjön meg arról, hogy beszúrja az elvárt mennyiséget <BR /> , hogy ne legyen véletlenszerű viselkedés az éles feladatban
  • Módosult a CreateDefaultAuthorizationContext meghívása null argumentummal

    • A null authorizationPolicies argumentummal rendelkező hívás CreateDefaultAuthorizationContext(IList<IAuthorizationPolicy>) által visszaadott AuthorizationContext implementációja módosította annak implementációját a .NET-keretrendszer 4.6-os verziójában.
    • Érintett kódtárak: System.IdentityModel
    • Javasolt művelet: Győződjön meg arról, hogy null értékű engedélyezési szabályzat esetén az új várt viselkedést kezeli
  • Az RSACng most már megfelelően betölti a nem standard méretű RSA-kulcsokat

    • A 4.6.2 előtti .NET-keretrendszer verziókban az RSA-tanúsítványokhoz nem szabványos kulcsméretű ügyfelek nem férhetnek hozzá ezekhez a kulcsokhoz a és GetRSAPrivateKey() a GetRSAPublicKey() bővítmény metódusaival. A CryptographicException rendszer a "Kért kulcsméret nem támogatott" üzenetet küldi. A .NET-keretrendszer 4.6.2-ben ez a probléma ki lett javítva. Hasonlóképpen, és RSACng.ImportParameters() most már nem szabványos kulcsméretekkel dolgozik anélkül, RSA.ImportParameters() hogy az 's-t dobtaCryptographicException.
    • Érintett kódtárak: mscorlib, System.Core
    • Javasolt művelet: Győződjön meg arról, hogy az RSA-kulcsok a várt módon működnek
  • Az elérési út kettőspont-ellenőrzése szigorúbb

    • A .NET-keretrendszer 4.6.2-ben számos módosítás történt a korábban nem támogatott útvonalak támogatásához (hosszban és formátumban is). A meghajtóelválasztó (kettőspont) megfelelő szintaxisának ellenőrzése helyesebb lett, aminek az volt a mellékhatása, hogy blokkolt néhány URI-elérési utat néhány olyan Elérésiút API-kban, ahol korábban tolerálták őket.
    • Érintett kódtárak: mscorlib, System.Runtime.Extensions
    • Javasolt művelet:
  • A ClaimsIdentity konstruktorokhoz intézett hívások

    • A .NET-keretrendszer 4.6.2-től kezdve megváltozik, hogy egy T:System.Security.Principal.IIdentity paraméterrel rendelkező konstruktorok hogyan T:System.Security.Claims.ClaimsIdentity állítják be a P:System.Security.Claims.ClaimsIdentify.Actor tulajdonságot. Ha az T:System.Security.Principal.IIdentity argumentum egy T:System.Security.Claims.ClaimsIdentity objektum, és az P:System.Security.Claims.ClaimsIdentify.Actor objektum tulajdonsága T:System.Security.Claims.ClaimsIdentity nem null, a P:System.Security.Claims.ClaimsIdentify.Actor tulajdonság a M:System.Security.Claims.ClaimsIdentity.Clone metódussal lesz csatolva. A Framework 4.6.1 és korábbi verzióiban a P:System.Security.Claims.ClaimsIdentify.Actor tulajdonság meglévő hivatkozásként van csatolva. A változás miatt az .NET-keretrendszer 4.6.2-től kezdődően az P:System.Security.Claims.ClaimsIdentify.Actor új T:System.Security.Claims.ClaimsIdentity objektum tulajdonsága nem egyenlő a P:System.Security.Claims.ClaimsIdentify.Actor konstruktor argumentumának tulajdonságávalT:System.Security.Principal.IIdentity. A .NET-keretrendszer 4.6.1-ben és a korábbi verziókban ez egyenlő.
    • Érintett kódtárak: mscorlib
    • Javasolt művelet: Győződjön meg arról, hogy a ClaimsIdentity a várt módon működik az új futtatókörnyezetben
  • A vezérlőkarakterek DataContractJsonSerializerrel való szerializálása mostantól kompatibilis az ECMAScript V6 és a V8 rendszerrel

    • A .NET-keretrendszer 4.6.2-s és korábbi verzióiban a DataContractJsonSerializer nem szerializált bizonyos speciális vezérlőkaraktereket, például \b, \f és \t, úgy, hogy azok kompatibilisek voltak az ECMAScript V6 és v8 szabványokkal. A .NET-keretrendszer 4.7-től kezdve ezeknek a vezérlőkaraktereknek a szerializálása kompatibilis az ECMAScript V6-tal és a V8-tal.
    • Érintett kódtárak: System.Runtime.Serialization.Json
    • Javasolt művelet: Azonos viselkedés biztosítása a DataContractJsonSerializerrel