Usługa Azure Data Lake Analytics jest uaktualniona do wersji .NET Framework 4.7.2
Ważne
Usługa Azure Data Lake Analytics została wycofana 29 lutego 2024 r. Dowiedz się więcej z tym ogłoszeniem.
W przypadku analizy danych organizacja może używać Azure Synapse Analytics lub Microsoft Fabric.
Domyślne środowisko uruchomieniowe platformy Azure Data Lake Analytics jest uaktualniane z wersji .NET Framework w wersji 4.5.2 do .NET Framework w wersji 4.7.2. Ta zmiana wprowadza niewielkie ryzyko wystąpienia zmian powodujących niezgodność, jeśli kod U-SQL używa zestawów niestandardowych, a te zestawy niestandardowe używają bibliotek platformy .NET.
To uaktualnienie z .NET Framework 4.5.2 do wersji 4.7.2 oznacza, że .NET Framework wdrożony w środowisku uruchomieniowym U-SQL (domyślnym środowisku uruchomieniowym) będzie teraz zawsze 4.7.2. Nie ma opcji równoległej dla wersji .NET Framework.
Po zakończeniu uaktualniania do wersji .NET Framework 4.7.2 kod zarządzany systemu zostanie uruchomiony jako wersja 4.7.2, biblioteki udostępnione przez użytkownika, takie jak zestawy niestandardowe U-SQL, będą uruchamiane w trybie zgodnym z poprzednimi wersjami dla wersji, dla której został wygenerowany zestaw.
- Jeśli biblioteki DLL zestawu są generowane dla wersji 4.5.2, wdrożona struktura będzie traktować je jako biblioteki 4.5.2, zapewniając (z kilkoma wyjątkami) semantyka 4.5.2.
- Teraz możesz użyć niestandardowych zestawów U-SQL, które korzystają z funkcji w wersji 4.7.2, jeśli jest przeznaczony dla .NET Framework 4.7.2.
Ze względu na to uaktualnienie do wersji .NET Framework 4.7.2 istnieje możliwość wprowadzenia zmian powodujących niezgodność zadań U-SQL korzystających z zestawów niestandardowych platformy .NET. Zalecamy sprawdzenie problemów ze zgodnością z poprzednimi wersjami, korzystając z poniższej procedury.
Jak sprawdzić problemy ze zgodnością z poprzednimi wersjami
Sprawdź potencjalne problemy powodujące niezgodność z poprzednimi wersjami, uruchamiając testy zgodności platformy .NET w kodzie platformy .NET w niestandardowych zestawach U-SQL.
Uwaga
Narzędzie nie wykrywa rzeczywistych zmian powodujących niezgodność. identyfikuje tylko nazywane interfejsami API platformy .NET, które mogą (w przypadku niektórych danych wejściowych) powodować problemy. Jeśli otrzymasz powiadomienie o problemie, kod może nadal być w porządku, jednak należy sprawdzić więcej szczegółów.
- Uruchom moduł sprawdzania zgodności z poprzednimi wersjami na bibliotekach DLL platformy .NET według
- Korzystanie z rozszerzenia programu Visual Studio w rozszerzeniu .NET Portability Analyzer Visual Studio
- Pobieranie i używanie autonomicznego narzędzia z witryny GitHub dotnetapiport. Instrukcje dotyczące uruchamiania autonomicznego narzędzia znajdują się w temacie Zmiany powodujące niezgodność w witrynie GitHub dotnetapiport
- Dla wersji 4.7.2. zgodność,
read isRetargeting == True
identyfikuje możliwe problemy.
- Jeśli narzędzie wskazuje, czy twój kod może mieć wpływ na dowolną z możliwych niezgodności z poprzednimi wersjami (niektóre typowe przykłady niezgodności są wymienione poniżej), możesz dokładniej sprawdzić
- Analizowanie kodu i identyfikowanie, czy kod przekazuje wartości do dotkniętych interfejsów API
- Wykonaj sprawdzanie środowiska uruchomieniowego. Wdrożenie środowiska uruchomieniowego nie jest wykonywane równolegle w usłudze ADLA. Przed uaktualnieniem można przeprowadzić sprawdzanie środowiska uruchomieniowego przy użyciu lokalnego uruchomienia programu VisualStudio z lokalnym .NET Framework 4.7.2 względem reprezentatywnego zestawu danych.
- Jeśli rzeczywiście masz wpływ na niezgodność z poprzednimi wersjami, wykonaj niezbędne kroki, aby je naprawić (takie jak naprawianie danych lub logiki kodu).
W większości przypadków nie należy wpływać na niezgodność z poprzednimi wersjami.
Oś czasu
Możesz sprawdzić wdrożenie nowego środowiska uruchomieniowego tutaj Rozwiązywanie problemów ze środowiskiem uruchomieniowym i przeglądając wcześniejsze pomyślne zadanie.
Co zrobić, jeśli nie mogę przejrzeć kodu w czasie
Zadanie można przesłać do starej wersji środowiska uruchomieniowego (która została skompilowana w wersji docelowej 4.5.2), jednak ze względu na brak .NET Framework możliwości równoległych nadal będzie działać tylko w trybie zgodności 4.5.2. Niektóre problemy ze zgodnością z poprzednimi wersjami mogą nadal występować z powodu tego zachowania.
Jakie są najczęstsze problemy ze zgodnością z poprzednimi wersjami, które mogą wystąpić
Najbardziej typowe niezgodności z poprzednimi wersjami, które mogą zostać zidentyfikowane przez moduł sprawdzania, to (wygenerowaliśmy tę listę, uruchamiając narzędzie sprawdzania we własnych wewnętrznych zadaniach usługi ADLA), które biblioteki mają wpływ (należy pamiętać, że biblioteki mogą być wywoływane tylko pośrednio, dlatego ważne jest, aby podjąć wymagane działanie #1, aby sprawdzić, czy twoje zadania mają wpływ) i możliwe działania w celu rozwiązania problemu. Uwaga: W prawie wszystkich przypadkach dla naszych własnych zadań ostrzeżenia okazały się fałszywie dodatnie ze względu na wąskie charaktery większości przełomowych zmian.
Właściwość IAsyncResult.CompletedSynchronously musi być poprawna, aby wynikowe zadanie zostało ukończone
- Podczas wywoływania elementu TaskFactory.FromAsync implementacja właściwości IAsyncResult.CompletedSynchronously musi być poprawna, aby wykonać wynikowe zadanie. Oznacza to, że właściwość musi zwracać wartość true, jeśli i tylko wtedy implementacja została ukończona synchronicznie. Wcześniej właściwość nie została sprawdzona.
- Biblioteki, których to dotyczy: mscorlib, System.Threading.Tasks
- Sugerowana akcja: upewnij się, że funkcja TaskFactory.FromAsync zwraca wartość true poprawnie
DataObject.GetData pobiera teraz dane jako UTF-8
- W przypadku aplikacji przeznaczonych dla .NET Framework 4 lub uruchamianych w .NET Framework 4.5.1 lub starszych wersjach dataObject.GetData pobiera dane w formacie HTML jako ciąg ASCII. W rezultacie znaki inne niż ASCII (znaki, których kody ASCII są większe niż 0x7F) są reprezentowane przez dwa losowe znaki.#N##N#For aplikacje przeznaczone dla .NET Framework 4.5 lub nowszego i uruchamiane w .NET Framework 4.5.2, pobiera dane w formacie HTML w formacie UTF-8,
DataObject.GetData
które reprezentują znaki większe niż 0x7F. - Biblioteki, których to dotyczy: Glo
- Sugerowana akcja: Upewnij się, że pobrane dane są formatem, który chcesz
- W przypadku aplikacji przeznaczonych dla .NET Framework 4 lub uruchamianych w .NET Framework 4.5.1 lub starszych wersjach dataObject.GetData pobiera dane w formacie HTML jako ciąg ASCII. W rezultacie znaki inne niż ASCII (znaki, których kody ASCII są większe niż 0x7F) są reprezentowane przez dwa losowe znaki.#N##N#For aplikacje przeznaczone dla .NET Framework 4.5 lub nowszego i uruchamiane w .NET Framework 4.5.2, pobiera dane w formacie HTML w formacie UTF-8,
Narzędzie XmlWriter zgłasza nieprawidłowe pary zastępcze
- W przypadku aplikacji przeznaczonych dla .NET Framework 4.5.2 lub poprzednich wersji pisanie nieprawidłowej pary zastępczej przy użyciu obsługi rezerwowej wyjątków nie zawsze zgłasza wyjątek. W przypadku aplikacji przeznaczonych dla .NET Framework 4.6 próba zapisania nieprawidłowej pary zastępczej zgłasza błąd
ArgumentException
. - Biblioteki, których to dotyczy: System.Xml, System.Xml. ReaderWriter
- Sugerowana akcja: Upewnij się, że nie piszesz nieprawidłowej pary zastępczej, która spowoduje wyjątek argumentu
- W przypadku aplikacji przeznaczonych dla .NET Framework 4.5.2 lub poprzednich wersji pisanie nieprawidłowej pary zastępczej przy użyciu obsługi rezerwowej wyjątków nie zawsze zgłasza wyjątek. W przypadku aplikacji przeznaczonych dla .NET Framework 4.6 próba zapisania nieprawidłowej pary zastępczej zgłasza błąd
Funkcja HtmlTextWriter nie renderuje
<br/>
poprawnie elementu- Począwszy od .NET Framework 4.6, wywołanie
HtmlTextWriter.RenderBeginTag()
elementu iHtmlTextWriter.RenderEndTag()
element<BR />
poprawnie wstawi tylko jeden<BR />
(zamiast dwóch) - Biblioteki, których to dotyczy: System.Web
- Sugerowana akcja: Upewnij się, że wstawiasz oczekiwaną ilość
<BR />
, aby w zadaniu produkcyjnym nie było widoczne żadne losowe zachowanie
- Począwszy od .NET Framework 4.6, wywołanie
Wywoływanie metody CreateDefaultAuthorizationContext z argumentem null zostało zmienione
- Implementacja elementu AuthorizationContext zwrócona przez wywołanie
CreateDefaultAuthorizationContext(IList<IAuthorizationPolicy>)
argumentu authorizationPolicies o wartości null zmieniła jego implementację w .NET Framework 4.6. - Biblioteki, których to dotyczy: System.IdentityModel
- Sugerowana akcja: upewnij się, że obsługujesz nowe oczekiwane zachowanie, gdy istnieją zasady autoryzacji o wartości null
- Implementacja elementu AuthorizationContext zwrócona przez wywołanie
RsACng teraz poprawnie ładuje klucze RSA o niestandardowym rozmiarze klucza
- W wersji .NET Framework starszych niż 4.6.2 klienci z niestandardowymi rozmiarami kluczy dla certyfikatów RSA nie mogą uzyskać dostępu do tych kluczy za pośrednictwem
GetRSAPublicKey()
metod iGetRSAPrivateKey()
rozszerzeń. ZgłaszanyCryptographicException
jest komunikat "Żądany rozmiar klucza nie jest obsługiwany". Rozwiązano .NET Framework 4.6.2. Podobnie,RSA.ImportParameters()
aRSACng.ImportParameters()
teraz pracować z niestandardowymi rozmiarami kluczy bez zgłaszaniaCryptographicException
wartości "s". - Biblioteki, których to dotyczy: mscorlib, System.Core
- Sugerowana akcja: upewnij się, że klucze RSA działają zgodnie z oczekiwaniami
- W wersji .NET Framework starszych niż 4.6.2 klienci z niestandardowymi rozmiarami kluczy dla certyfikatów RSA nie mogą uzyskać dostępu do tych kluczy za pośrednictwem
Kontrole dwukropka ścieżki są bardziej rygorystyczne
- W .NET Framework 4.6.2 wprowadzono wiele zmian w celu obsługi wcześniej nieobsługiwanych ścieżek (zarówno długości, jak i formatu). Sprawdzanie prawidłowej składni separatora dysku (dwukropka) było bardziej poprawne, co miało efekt uboczny blokowania niektórych ścieżek URI w kilku wybranych interfejsach API ścieżki, w których były tolerowane.
- Biblioteki, których to dotyczy: mscorlib, System.Runtime.Extensions
- Sugerowana akcja:
Wywołania konstruktorów ClaimsIdentity
- Począwszy od .NET Framework 4.6.2, istnieje zmiana sposobu, w jaki
T:System.Security.Claims.ClaimsIdentity
konstruktory z parametremT:System.Security.Principal.IIdentity
ustawićP:System.Security.Claims.ClaimsIdentify.Actor
właściwość.T:System.Security.Principal.IIdentity
Jeśli argument jest obiektemT:System.Security.Claims.ClaimsIdentity
, aP:System.Security.Claims.ClaimsIdentify.Actor
właściwość tegoT:System.Security.Claims.ClaimsIdentity
obiektu nienull
jest ,P:System.Security.Claims.ClaimsIdentify.Actor
właściwość jest dołączona przy użyciuM:System.Security.Claims.ClaimsIdentity.Clone
metody . W programie Framework 4.6.1 i starszych wersjachP:System.Security.Claims.ClaimsIdentify.Actor
właściwość jest dołączona jako istniejące odwołanie. Ze względu na tę zmianę, począwszy od .NET Framework 4.6.2,P:System.Security.Claims.ClaimsIdentify.Actor
właściwość nowegoT:System.Security.Claims.ClaimsIdentity
obiektu nie jest równaP:System.Security.Claims.ClaimsIdentify.Actor
właściwości argumentu konstruktoraT:System.Security.Principal.IIdentity
. W wersji .NET Framework 4.6.1 i starszych jest to równe. - Biblioteki, których to dotyczy: mscorlib
- Sugerowana akcja: upewnij się, że oświadczeniaDentyfikacja działa zgodnie z oczekiwaniami w nowym środowisku uruchomieniowym
- Począwszy od .NET Framework 4.6.2, istnieje zmiana sposobu, w jaki
Serializacja znaków kontrolek za pomocą elementu DataContractJsonSerializer jest teraz zgodna z programem ECMAScript V6 i V8
- W programie .NET Framework 4.6.2 i starszych wersjach moduł DataContractJsonSerializer nie serializował niektórych znaków kontrolek specjalnych, takich jak \b, \f i \t, w sposób zgodny ze standardami ECMAScript V6 i V8. Począwszy od .NET Framework 4.7, serializacja tych znaków kontrolnych jest zgodna z programem ECMAScript V6 i V8.
- Biblioteki, których to dotyczy: System.Runtime.Serialization.Json
- Sugerowana akcja: Upewnij się, że takie samo zachowanie jest zachowywane przy użyciu elementu DataContractJsonSerializer