Yığın izleme desteği devre dışı bırakıldığında Assembly.GetCallingAssembly davranışı değişir

Assembly.GetCallingAssembly() artık Native AOT’yi destekliyor ve çağıranı belirlemek için yığın izleme verilerini kullanıyor. Yığın izleme desteği devre dışı bırakılırsa, yöntem artık hem Native AOT hem de CoreCLR'de NotSupportedException oluşturur.

Sürüm kullanıma sunulmuştur

.NET 11 Önizleme 7

Önceki davranış

Önceden, Native AOT üzerinde Assembly.GetCallingAssembly() her zaman PlatformNotSupportedException özel durumunu oluştururdu. Daha önce CoreCLR'de yöntem, StackTraceSupportfalse olarak ayarlanmış olsa bile çağıran derlemeyi döndürüyordu.

Yeni davranış

.NET 11’den itibaren, Native AOT üzerinde, Assembly.GetCallingAssembly() yığın izleme verilerini inceleyerek çağıran derlemeyi döndürür. .NET 11’den itibaren, hem Native AOT’de hem de CoreCLR’de, false özellik anahtarı NotSupportedException olarak ayarlanmışsa yöntem StackTraceSupport fırlatır.

Özel durum iletisi:

StackTraceSupport özellik anahtarı false olarak ayarlandığında yığın izleme bilgileri alınamıyor.

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Doğru çağıranı döndürmek Assembly.GetCallingAssembly() için yığın izleme verileri gerekir. Yığın izleme desteği kullanılamıyorsa, çalışma zamanı çağıranı güvenilir bir şekilde belirleyemez. Çalışma zamanı artık yanlış bir sonuç döndürmek yerine NotSupportedException atıyor. Yerel AOT destek ayrıntıları için bkz. dotnet/runtime#129963.

false değeri StackTraceSupport olarak ayarlanmış şekilde yayımlarsanız ve uygulamanız Assembly.GetCallingAssembly() çağırırsa, NotSupportedException bekleyin. Şu seçeneklerden birini kullanın:

  • Anahtarı kaldırarak veya StackTraceSupport değerini true olarak ayarlayarak yığın izleme desteğini etkinleştirin.
  • Assembly.GetCallingAssembly() çağrılarını kaldırın.
  • NotSupportedException öğesini yakalayın ve yedek yolu açıkça işleyin.

Etkilenen API'ler