Azure Data Lake Analytics wordt bijgewerkt naar de .NET Framework v-4.7.2
De Azure Data Lake Analytics standaard runtime wordt bijgewerkt van .NET Framework v 4.5.2 naar .NET Framework v-4.7.2. Met deze wijziging wordt een klein risico op het verbreken van wijzigingen geïntroduceerd als uw U-SQL-code aangepaste assembly's gebruikt, en deze aangepaste assembly's .NET-bibliotheken gebruiken.
Deze upgrade van .NET Framework 4.5.2 naar versie 4.7.2 betekent dat de .NET Framework geïmplementeerd in een U-SQL-runtime (de standaard runtime) nu altijd 4.7.2 is. Er is geen side-by-side optie voor .NET Framework versies.
Nadat deze upgrade naar .NET Framework 4.7.2 is voltooid, wordt de beheerde code van het systeem uitgevoerd als versie 4.7.2. door de gebruiker geleverde Bibliotheken, zoals de U-SQL-assembly's, worden uitgevoerd in de neerwaarts compatibele modus die geschikt is voor de versie waarvoor de assembly is gegenereerd.
- Als uw assembly-Dll's worden gegenereerd voor versie 4.5.2, behandelt het geïmplementeerde Framework deze als 4.5.2-Bibliotheken, voorzien van (met enkele uitzonde ringen) 4.5.2 semantiek.
- U kunt nu aangepaste U-SQL-assembly's gebruiken die gebruikmaken van versie 4.7.2-functies, als u de .NET Framework 4.7.2 richt.
Als gevolg van deze upgrade naar .NET Framework 4.7.2 is het mogelijk om belang rijke wijzigingen aan te brengen in uw U-SQL-taken die gebruikmaken van aangepaste .NET-assembly's. U wordt aangeraden te controleren of er problemen zijn met de compatibiliteit met behulp van de onderstaande procedure.
Controleren op achterwaartse compatibiliteits problemen
Controleer op de mogelijkheden van problemen met de compatibiliteit van het probleem door de .NET-compatibiliteits controles uit te voeren op uw .NET-code in uw U-SQL-aangepaste assembly's.
Notitie
Het hulp programma detecteert geen wijzigingen in de werkelijke breuk. Er worden alleen .NET-Api's geïdentificeerd die mogelijk (voor bepaalde invoer) problemen veroorzaken. Als u een melding ontvangt van een probleem, kan uw code nog steeds goed zijn, maar u moet wel meer informatie controleren.
- Voer de neerwaartse compatibiliteits controle uit op uw .NET Dll's door
- De Visual Studio-uitbrei ding gebruiken op de Visual Studio-uitbrei ding .net portabiliteit Analyzer
- Het zelfstandige hulp programma downloaden en gebruiken vanuit github dotnetapiport. Instructies voor het uitvoeren van een zelfstandig hulp programma zijn te vinden op github dotnetapiport -belang rijke wijzigingen
- Voor 4.7.2. compatibiliteit,
read isRetargeting == Trueidentificeert mogelijke problemen.
- Als het hulp programma aangeeft of uw code kan worden beïnvloed door een van de mogelijke achterwaartse compatibiliteits problemen (een aantal veelvoorkomende voor beelden van incompatibiliteit worden hieronder weer gegeven), kunt u verder controleren door
- De code analyseren en identificeren of uw code waarden door geven aan de betrokken Api's
- Voer een runtime controle uit. De runtime-implementatie wordt niet naast elkaar uitgevoerd in ADLA. U kunt een runtime controle uitvoeren vóór de upgrade, met behulp van de lokale uitvoering van Visual Studio met een lokale .NET Framework 4.7.2 op basis van een representatieve gegevensset.
- Als u een probleem ondervindt met een achterwaartse compatibiliteit, neemt u de nodige maat regelen om deze op te lossen (bijvoorbeeld om uw gegevens of code logica te herstellen).
In de meeste gevallen moet u niet worden beïnvloed door achterwaartse compatibiliteit.
Tijdlijn
U kunt de implementatie van de nieuwe runtime controleren met behulp van runtime problemen oplossenen een eerdere voltooide taak bekijken.
Wat gebeurt er als ik mijn code niet in tijd kan bekijken
U kunt uw taak verzenden op basis van de oude runtime versie (die is opgebouwd in plaats van 4.5.2), maar als gevolg van het ontbreken van .NET Framework side-by-side-mogelijkheden, wordt het nog steeds alleen uitgevoerd in de compatibiliteits modus 4.5.2. Mogelijk ondervindt u nog steeds enkele van de compatibiliteits problemen vanwege dit gedrag.
Wat zijn de meest voorkomende problemen met betrekking tot de compatibiliteit die u kunt tegen komen
De meest voorkomende achterwaartse incompatibiliteiten die de controle waarschijnlijk zal identificeren, zijn (we hebben deze lijst gegenereerd door de controle uit te voeren op onze eigen interne ADLA-taken), waardoor de tape wisselaars worden beïnvloed (Opmerking: u kunt de bibliotheken alleen indirect aanroepen. het is dus belang rijk om de vereiste actie te ondernemen #1 om te controleren of uw taken worden beïnvloed) en mogelijke acties Opmerking: in bijna alle gevallen voor onze eigen taken is de waarschuwing ingesteld op valse positieven als gevolg van de smalle veranderingen van de meeste breuk.
De eigenschap IAsyncResult. CompletedSynchronously moet correct zijn voor het volt ooien van de resulterende taak
- Bij het aanroepen van TaskFactory. FromAsync moet de implementatie van de eigenschap IAsyncResult. CompletedSynchronously juist zijn voor het volt ooien van de resulterende taak. Dat wil zeggen dat de eigenschap alleen waar retourneert als en alleen als de implementatie synchroon is voltooid. Voorheen werd de eigenschap niet ingecheckt.
- Beïnvloede bibliotheken: mscorlib, System. Threading. tasks
- Aanbevolen actie: Zorg ervoor dat TaskFactory. FromAsync correct retourneert
Data object. GetData haalt gegevens nu op als UTF-8
- Voor apps die zijn gericht op de .NET Framework 4 of die worden uitgevoerd op de .NET Framework 4.5.1 of eerdere versies, wordt met Data object. GetData HTML-gegevens opgehaald als een ASCII-teken reeks. Als gevolg hiervan worden niet-ASCII-tekens (tekens waarvan de ASCII-codes groter zijn dan 0x7F) vertegenwoordigd door twee wille keurige tekens. #N # #N#For-apps die zijn gericht op de .NET Framework 4,5 of hoger en die worden uitgevoerd op de .NET Framework 4.5.2,
DataObject.GetDatahaalt gegevens op in HTML-indeling als UTF-8, wat tekens bevat die groter zijn dan 0x7F. - Beïnvloede bibliotheken: Glo
- Aanbevolen actie: Zorg ervoor dat de opgehaalde gegevens de gewenste indeling hebben
- Voor apps die zijn gericht op de .NET Framework 4 of die worden uitgevoerd op de .NET Framework 4.5.1 of eerdere versies, wordt met Data object. GetData HTML-gegevens opgehaald als een ASCII-teken reeks. Als gevolg hiervan worden niet-ASCII-tekens (tekens waarvan de ASCII-codes groter zijn dan 0x7F) vertegenwoordigd door twee wille keurige tekens. #N # #N#For-apps die zijn gericht op de .NET Framework 4,5 of hoger en die worden uitgevoerd op de .NET Framework 4.5.2,
XmlWriter genereert ongeldige surrogaat paren
- Voor apps die zijn gericht op de .NET Framework 4.5.2 of de vorige versies, wordt er niet altijd een uitzonde ring gegenereerd door een ongeldige surrogaat paar te schrijven met behulp van uitzonde ring voor terugval verwerking. Voor apps die zijn gericht op de .NET Framework 4,6, wordt geprobeerd een ongeldig surrogaat paar te schrijven
ArgumentException. - Beïnvloede bibliotheken: System.Xml, System.Xml. ReaderWriter
- Aanbevolen actie: Zorg ervoor dat u geen ongeldig surrogaat paar schrijft dat argument uitzondering veroorzaakt
- Voor apps die zijn gericht op de .NET Framework 4.5.2 of de vorige versies, wordt er niet altijd een uitzonde ring gegenereerd door een ongeldige surrogaat paar te schrijven met behulp van uitzonde ring voor terugval verwerking. Voor apps die zijn gericht op de .NET Framework 4,6, wordt geprobeerd een ongeldig surrogaat paar te schrijven
HtmlTextWriter geeft het
<br/>element niet correct weer- Vanaf de .NET Framework 4,6 wordt het aanroepen
HtmlTextWriter.RenderBeginTag()enHtmlTextWriter.RenderEndTag()met een<BR />-element op de juiste manier ingevoegd<BR />(in plaats van twee) - Beïnvloede bibliotheken: System. Web
- Aanbevolen actie: Zorg ervoor dat u de verwachte hoeveelheid
<BR />wilt zien, zodat er geen wille keurig gedrag wordt weer gegeven in de productie taak
- Vanaf de .NET Framework 4,6 wordt het aanroepen
Het aanroepen van CreateDefaultAuthorizationContext met een null-argument is gewijzigd
- De implementatie van de AuthorizationContext die wordt geretourneerd door een aanroep naar het
CreateDefaultAuthorizationContext(IList<IAuthorizationPolicy>)argument met een null-authorizationPolicies-waarde, is gewijzigd in de .NET Framework 4,6. - Beïnvloede bibliotheken: System. Identity model
- Aanbevolen actie: Zorg ervoor dat u het nieuwe verwachte gedrag afhandelt wanneer er sprake is van Null-autorisatie beleid
- De implementatie van de AuthorizationContext die wordt geretourneerd door een aanroep naar het
RSACng laadt nu RSA-sleutels van de niet-standaard sleutel grootte
- In .NET Framework versies voorafgaand aan 4.6.2 hebben klanten met een niet-standaard sleutel grootte voor RSA-certificaten geen toegang tot deze sleutels via de
GetRSAPublicKey()GetRSAPrivateKey()extensie methoden en. ACryptographicExceptionmet het bericht ' de aangevraagde sleutel grootte wordt niet ondersteund ' wordt gegenereerd. Het .NET Framework 4.6.2 dit probleem is opgelost.RSA.ImportParameters()EnRSACng.ImportParameters()nu werken met niet-standaard sleutel formaten zonder dat u dat hoeft te doenCryptographicException. - Beïnvloede bibliotheken: mscorlib, System. core
- Aanbevolen actie: Zorg ervoor dat RSA-sleutels werken zoals verwacht
- In .NET Framework versies voorafgaand aan 4.6.2 hebben klanten met een niet-standaard sleutel grootte voor RSA-certificaten geen toegang tot deze sleutels via de
Dubbele controles van paden zijn strikter
- In .NET Framework 4.6.2 zijn er een aantal wijzigingen aangebracht ter ondersteuning van eerder niet-ondersteunde paden (zowel de lengte als de indeling). Controleren of de syntaxis van het juiste schijf scheidings teken (dubbele punt) is verbeterd, waardoor sommige URI-paden in enkele Select Path-Api's werden geblokkeerd, waar ze werden gebruikt om te worden toegestaan.
- Beïnvloede bibliotheken: mscorlib, System. runtime. Extensions
- Aanbevolen actie:
Aanroepen naar claims-Constructors
- Vanaf de .NET Framework 4.6.2 is er een wijziging in de manier waarop
T:System.Security.Claims.ClaimsIdentityconstructors met eenT:System.Security.Principal.IIdentitypara meter deP:System.Security.Claims.ClaimsIdentify.Actoreigenschap instellen. Als hetT:System.Security.Principal.IIdentityargument eenT:System.Security.Claims.ClaimsIdentityobject is en deP:System.Security.Claims.ClaimsIdentify.Actoreigenschap van datT:System.Security.Claims.ClaimsIdentityobject niet isnull, wordt deP:System.Security.Claims.ClaimsIdentify.Actoreigenschap gekoppeld met behulp van deM:System.Security.Claims.ClaimsIdentity.Clonemethode. In de Framework-4.6.1 en eerdere versiesP:System.Security.Claims.ClaimsIdentify.Actorwordt de eigenschap gekoppeld als een bestaande verwijzing. Als gevolg van deze wijziging, te beginnen met de .NET Framework 4.6.2,P:System.Security.Claims.ClaimsIdentify.Actoris de eigenschap van het nieuweT:System.Security.Claims.ClaimsIdentityobject niet gelijk aan deP:System.Security.Claims.ClaimsIdentify.Actoreigenschap van het argument van de constructorT:System.Security.Principal.IIdentity. In de .NET Framework 4.6.1 en eerdere versies is deze gelijk. - Beïnvloede bibliotheken: mscorlib
- Aanbevolen actie: Zorg ervoor dat claims werkt zoals verwacht bij een nieuwe runtime
- Vanaf de .NET Framework 4.6.2 is er een wijziging in de manier waarop
Serialisatie van besturings tekens met DataContractJsonSerializer is nu compatibel met ECMAScript V6 en V8
- In de .NET Framework-4.6.2 en eerdere versies heeft de DataContractJsonSerializer geen speciale Stuur tekens, zoals \b, \f en \t, op een manier geserialiseerd die compatibel is met de ECMAScript V6-en V8-standaarden. Vanaf de .NET Framework 4,7 is serialisatie van deze Stuur codes compatibel met ECMAScript V6 en V8.
- Beïnvloede bibliotheken: System.Runtime.Serialization.Jsop
- Aanbevolen actie: zorg voor hetzelfde gedrag met DataContractJsonSerializer