Azure Data Lake Analytics .NET Framework v4.7.2 sürümüne yükseltiyor
Önemli
Azure Data Lake Analytics 29 Şubat 2024'te kullanımdan kaldırıldı. Bu duyuru ile daha fazla bilgi edinin.
Veri analizi için kuruluşunuz Azure Synapse Analytics veya Microsoft Fabric kullanabilir.
Azure Data Lake Analytics varsayılan çalışma zamanı .NET Framework v4.5.2'den .NET Framework v4.7.2'ye yükseltiliyor. U-SQL kodunuz özel derlemeler kullanıyorsa ve bu özel derlemeler .NET kitaplıklarını kullanıyorsa bu değişiklik küçük bir hataya neden olabilir.
.NET Framework 4.5.2 sürümünden 4.7.2 sürümüne yapılan bu yükseltme, U-SQL çalışma zamanında (varsayılan çalışma zamanı) dağıtılan .NET Framework artık her zaman 4.7.2 olacağı anlamına gelir. .NET Framework sürümleri için yan yana bir seçenek yoktur.
.NET Framework 4.7.2'ye yükseltme tamamlandıktan sonra, sistemin yönetilen kodu sürüm 4.7.2 olarak çalışacak, kullanıcı tarafından sağlanan U-SQL özel derlemeleri gibi kitaplıklar, derlemenin oluşturulduğu sürüme uygun geriye dönük uyumlu modda çalışacaktır.
- Derleme DLL'leriniz sürüm 4.5.2 için oluşturulduysa, dağıtılan çerçeve bunları 4.5.2 kitaplıkları olarak ele alır ve 4.5.2 semantiği sağlar .5.2 semantiği sağlar.
- artık .NET Framework 4.7.2'yi hedefliyorsanız sürüm 4.7.2 özelliklerinden yararlanan U-SQL özel derlemelerini kullanabilirsiniz.
.NET Framework 4.7.2'ye yapılan bu yükseltme nedeniyle, .NET özel derlemelerini kullanan U-SQL işlerinizde hataya neden olan değişiklikler getirme olasılığı vardır. Aşağıdaki yordamı kullanarak geriye dönük uyumluluk sorunlarını denetlemenizi öneririz.
Geriye dönük uyumluluk sorunlarını denetleme
U-SQL özel derlemelerinizde .NET kodunuzda .NET uyumluluk denetimlerini çalıştırarak geriye dönük uyumluluk hatalarının olası olup olmadığını denetleyin.
Not
Araç gerçek hataya neden olan değişiklikleri algılamaz. yalnızca (belirli girişler için) sorunlara neden olabilecek adlı .NET API'lerini tanımlar. Bir sorun hakkında bildirim alırsanız, kodunuz yine de iyi olabilir, ancak daha fazla ayrıntıyı iade etmelisiniz.
- .NET DLL'lerinizde geriye dönük uyumluluk denetleyicisini
- .NET Portability Analyzer Visual Studio Uzantısında Visual Studio Uzantısını Kullanma
- GitHub dotnetapiport'tan tek başına aracı indirme ve kullanma. Tek başına aracı çalıştırma yönergeleri GitHub dotnetapiport hataya neden olan değişiklikler başlığındadır
- 4.7.2 için. uyumluluk,
read isRetargeting == True
olası sorunları tanımlar.
- Araç kodunuzun olası geriye dönük uyumsuzluklardan etkilenip etkilenmeyebileceğini belirtiyorsa (aşağıda bazı yaygın uyumsuzluk örnekleri listelenmiştir)
- Kodunuzu analiz etme ve kodunuzun etkilenen API'lere değer geçirip geçirmediğini belirleme
- Çalışma zamanı denetimi gerçekleştirme. Çalışma zamanı dağıtımı ADLA'da yan yana yapılmaz. VisualStudio'nun yerel çalıştırmasını temsili bir veri kümesine karşı yerel bir .NET Framework 4.7.2 ile kullanarak yükseltmeden önce bir çalışma zamanı denetimi gerçekleştirebilirsiniz.
- Geriye dönük uyumsuzluk sizi gerçekten etkiliyorsa, düzeltmek için gerekli adımları uygulayın (verilerinizi veya kod mantığınızı düzeltme gibi).
Çoğu durumda, geriye dönük uyumsuzluk sizi etkilememelidir.
Zaman çizelgesi
Yeni çalışma zamanının dağıtımını Çalışma Zamanı sorun giderme bölümünden ve önceki başarılı işlere bakarak de denetlenebilirsiniz.
Kodumu zamanında gözden geçiremiyorsam ne olur?
İşinizi eski çalışma zamanı sürümüne (4.5.2'yi hedefleyerek oluşturulmuş) gönderebilirsiniz, ancak yan yana .NET Framework özellikleri olmadığından, yalnızca 4.5.2 uyumluluk modunda çalışmaya devam eder. Bu davranış nedeniyle geriye dönük uyumluluk sorunlarından bazılarıyla karşılaşmaya devam edebilirsiniz.
Karşılaşabileceğiniz en yaygın geriye dönük uyumluluk sorunları nelerdir?
Denetleyicinin tanımlayabileceği en yaygın geriye dönük uyumsuzluklar , (bu listeyi denetleyiciyi kendi iç ADLA işlerimizde çalıştırarak oluşturduk), kitaplıkların etkilendiği kitaplıklardır (not: kitaplıkları yalnızca dolaylı olarak çağırabileceğinizi unutmayın; bu nedenle, işlerinizin etkilenip etkilenmediğini denetlemek için gerekli 1 numaralı eylemi gerçekleştirmeniz önemlidir) ve düzeltecek olası eylemlerdir. Not: Kendi işlerimiz için neredeyse tüm durumlarda, hataya neden olan değişikliklerin çoğunun dar olması nedeniyle uyarılar hatalı pozitif sonuçlara neden oldu.
Sonuçta elde edilen görevin tamamlanması için IAsyncResult.CompletedSynchronously özelliği doğru olmalıdır
- TaskFactory.FromAsync çağrılırken, sonuçta elde edilen görevin tamamlanması için IAsyncResult.CompletedSynchronously özelliğinin uygulanması doğru olmalıdır. Diğer bir ifadeyle, uygulamanın zaman uyumlu olarak tamamlanması durumunda özelliğin true döndürmesi gerekir. Daha önce, özellik denetlenmiyordu.
- Etkilenen Kitaplıklar: mscorlib, System.Threading.Tasks
- Önerilen Eylem: TaskFactory.FromAsync öğesinin doğru şekilde doğru döndürdüğünden emin olun
DataObject.GetData artık verileri UTF-8 olarak alır
- DataObject.GetData, .NET Framework 4'i hedefleyen veya .NET Framework 4.5.1 veya önceki sürümlerinde çalışan uygulamalar için HTML biçimli verileri ASCII dizesi olarak alır. Sonuç olarak, ASCII olmayan karakterler (ASCII kodları 0x7F büyük olan karakterler) iki rastgele karakterle gösterilir.#N##N#For .NET Framework 4.5 veya sonraki sürümleri hedefleyen ve .NET Framework 4.5.2 üzerinde çalışan uygulamalar,
DataObject.GetData
HTML biçimli verileri UTF-8 olarak alır ve bu da 0x7F'den büyük karakterleri doğru temsil eder. - Etkilenen Kitaplıklar: Glo
- Önerilen Eylem: Alınan verilerin istediğiniz biçim olduğundan emin olun
- DataObject.GetData, .NET Framework 4'i hedefleyen veya .NET Framework 4.5.1 veya önceki sürümlerinde çalışan uygulamalar için HTML biçimli verileri ASCII dizesi olarak alır. Sonuç olarak, ASCII olmayan karakterler (ASCII kodları 0x7F büyük olan karakterler) iki rastgele karakterle gösterilir.#N##N#For .NET Framework 4.5 veya sonraki sürümleri hedefleyen ve .NET Framework 4.5.2 üzerinde çalışan uygulamalar,
XmlWriter geçersiz vekil çiftler üzerine atıyor
- .NET Framework 4.5.2 veya önceki sürümleri hedefleyen uygulamalar için, özel durum geri dönüş işlemesini kullanarak geçersiz bir vekil çift yazmak her zaman bir özel durum oluşturmaz. .NET Framework 4.6'yı hedefleyen uygulamalar için geçersiz bir vekil çift yazmaya çalışmak bir
ArgumentException
oluşturur. - Etkilenen Kitaplıklar: System.Xml, System.Xml. ReaderWriter
- Önerilen Eylem: Bağımsız değişken özel durumu oluşturacak geçersiz bir vekil çift yazmadığınızdan emin olun
- .NET Framework 4.5.2 veya önceki sürümleri hedefleyen uygulamalar için, özel durum geri dönüş işlemesini kullanarak geçersiz bir vekil çift yazmak her zaman bir özel durum oluşturmaz. .NET Framework 4.6'yı hedefleyen uygulamalar için geçersiz bir vekil çift yazmaya çalışmak bir
HtmlTextWriter öğeyi doğru işlemez
<br/>
- .NET Framework 4.6 sürümünden başlayarak ve
HtmlTextWriter.RenderEndTag()
öğesiyle<BR />
çağrısıHtmlTextWriter.RenderBeginTag()
doğru bir şekilde yalnızca bir (<BR />
iki yerine) ekler - Etkilenen Kitaplıklar: System.Web
- Önerilen Eylem: Üretim işinde rastgele bir davranış görülmemesi için görmeyi beklediğiniz miktarı
<BR />
eklediğinizden emin olun
- .NET Framework 4.6 sürümünden başlayarak ve
Null bağımsız değişkenle CreateDefaultAuthorizationContext çağrısı değiştirildi
- Null authorizationPolicies bağımsız değişkeniyle çağrısı tarafından
CreateDefaultAuthorizationContext(IList<IAuthorizationPolicy>)
döndürülen AuthorizationContext uygulaması, .NET Framework 4.6'da uygulamasını değiştirdi. - Etkilenen Kitaplıklar: System.IdentityModel
- Önerilen Eylem: Null yetkilendirme ilkesi olduğunda beklenen yeni davranışı işlediğinizden emin olun
- Null authorizationPolicies bağımsız değişkeniyle çağrısı tarafından
RSACng artık standart olmayan anahtar boyutuna sahip RSA anahtarlarını doğru şekilde yükler
- 4.6.2 öncesi .NET Framework sürümlerde, RSA sertifikaları için standart olmayan anahtar boyutlarına sahip müşteriler ve
GetRSAPrivateKey()
uzantı yöntemleri aracılığıylaGetRSAPublicKey()
bu anahtarlara erişemez.CryptographicException
"İstenen anahtar boyutu desteklenmiyor" iletisini içeren bir oluşturulur. .NET Framework 4.6.2 ile bu sorun düzeltildi. Benzer şekilde,RSA.ImportParameters()
artıkRSACng.ImportParameters()
'ler oluşturmadanCryptographicException
standart olmayan anahtar boyutlarıyla da çalışır. - Etkilenen Kitaplıklar: mscorlib, System.Core
- Önerilen Eylem: RSA anahtarlarının beklendiği gibi çalıştığından emin olun
- 4.6.2 öncesi .NET Framework sürümlerde, RSA sertifikaları için standart olmayan anahtar boyutlarına sahip müşteriler ve
Yol iki nokta üst üste denetimleri daha katı
- .NET Framework 4.6.2'de, daha önce desteklenmeyen yolları (hem uzunluk hem de biçimde) desteklemek için birçok değişiklik yapıldı. Düzgün sürücü ayırıcı (iki nokta üst üste) söz dizimi denetimleri daha doğru yapılmıştır ve bu da tolere edildikleri birkaç seçim Yol API'sinde bazı URI yollarını engellemenin yan etkisine sahipti.
- Etkilenen Kitaplıklar: mscorlib, System.Runtime.Extensions
- Önerilen Eylem:
ClaimsIdentity oluşturucularına yapılan çağrılar
- .NET Framework 4.6.2'den başlayarak, parametreli oluşturucuların özelliği ayarlama
P:System.Security.Claims.ClaimsIdentify.Actor
yöntemindeT:System.Security.Claims.ClaimsIdentity
birT:System.Security.Principal.IIdentity
değişiklik vardır.T:System.Security.Principal.IIdentity
Bağımsız değişken birT:System.Security.Claims.ClaimsIdentity
nesneyse ve buT:System.Security.Claims.ClaimsIdentity
nesneninP:System.Security.Claims.ClaimsIdentify.Actor
özelliği değilsenull
P:System.Security.Claims.ClaimsIdentify.Actor
, özelliği yöntemi kullanılarakM:System.Security.Claims.ClaimsIdentity.Clone
eklenir. Framework 4.6.1 ve önceki sürümlerdeP:System.Security.Claims.ClaimsIdentify.Actor
özelliği var olan bir başvuru olarak eklenir. Bu değişiklik nedeniyle, .NET Framework 4.6.2'den başlayarak,P:System.Security.Claims.ClaimsIdentify.Actor
yeniT:System.Security.Claims.ClaimsIdentity
nesnenin özelliği oluşturucununT:System.Security.Principal.IIdentity
bağımsız değişkeninin özelliğineP:System.Security.Claims.ClaimsIdentify.Actor
eşit değildir. .NET Framework 4.6.1 ve önceki sürümlerde eşittir. - Etkilenen Kitaplıklar: mscorlib
- Önerilen Eylem: ClaimsIdentity'nin yeni çalışma zamanında beklendiği gibi çalıştığından emin olun
- .NET Framework 4.6.2'den başlayarak, parametreli oluşturucuların özelliği ayarlama
DataContractJsonSerializer ile denetim karakterlerinin seri hale getirilmesi artık ECMAScript V6 ve V8 ile uyumludur
- .NET framework 4.6.2 ve önceki sürümlerinde DataContractJsonSerializer, ECMAScript V6 ve V8 standartlarıyla uyumlu bir şekilde \b, \f ve \t gibi bazı özel denetim karakterlerini seri hale getirmedi. .NET Framework 4.7'den başlayarak, bu denetim karakterlerinin seri hale getirilmesi ECMAScript V6 ve V8 ile uyumludur.
- Etkilenen Kitaplıklar: System.Runtime.Serialization.Json
- Önerilen Eylem: DataContractJsonSerializer ile aynı davranışı sağlayın