DÜZELTME: AppContext anahtar geçersiz kılmaları, .NET Framework.NET Framework 4.7 üzerinde çalışan uygulamalara uygulanmıyor

Uygulandığı Öğe
.NET Framework 4.7

Belirtiler

Bir bilgisayarda Microsoft .NET Framework.NET Framework 4.7'nin yüklü olduğunu varsayalım. .NET Framework.NET Framework üzerinde çalışan uygulamaların, AppContext anahtarları için kayıt defterinde belirtilen uyumluluk ayarlarına uymadığını fark edebilirsiniz. Bu senaryoda, AppContext bayrağı için bir kayıt defteri seçeneği ayarlamaya çalıştığınızda, kayıt defteri seçeneğinde belirtilen değer False olarak ayarlanmış gibi davranır.

Neden

Program kayıt defterindeki bir AppContext anahtarının değerini okuduğunda veriler alınamaz. Bu durumda, ayarın kayıt defterinde belirtildiği şekilde bir sorun olduğu varsayılır ve uygulamaya False değeri döndürülür.

Çözüm

Bu sorunu çözmek için, uygulama yapılandırması (app.config) dosyasını kullanarak bayrağı istenen değere ayarlayın.

app.config dosyasının çalışma zamanı> bölümüne bir AppContextSwitchOverrides öğesi< ekleyin.>< Anahtarın tek bir özniteliği vardır, yani değeri hem anahtar adını hem de değeri içeren bir anahtarı veya değer çiftini temsil eden bir dizedir.

Birden çok anahtar tanımlamak için, AppContextSwitchOverrides> öğesinin value özniteliğinde < her anahtarın anahtarını veya değer çiftini noktalı virgülle ayırın. Bu durumda, <AppContextSwitchOverrides> öğesi aşağıdaki biçime sahiptir:

XML


<AppContextSwitchOverrides value=”switchName1=value1;switchName2=value2” />

Bir yapılandırma ayarı tanımlamak için AppContextSwitchOverrides> öğesinin< kullanılması uygulama kapsamına sahiptir. Yani, yalnızca uygulamayı etkiler.

app.config dosyalar uygulamaya özgü olduğundan, etkilenen tüm uygulamalar için bunu yapmanız gerekir.

AppContext hakkında daha fazla bilgi için Microsoft Developer Network (MSDN) web sitesinde aşağıdaki konu başlığına gidin:

AppContext Sınıfı

Daha Fazla Bilgi

Bu sorun, AppContext anahtarlarının AppDomain yaşam döngüsünün çok erken aşamalarında kullanılmasını sağlama çalışmasının bir parçası olarak sunulmuştur. Bu, AppContext anahtarını kullanması gereken kod AppDomain'in getirilmesinde çok erken çalışsa bile, aksi takdirde bozulacak değişikliklerin güvenli bir şekilde yapılmasına izin verdi.

Sorun, kayıt defterinden okunan değeri depolamak için ne kadar bellek ayrıldığıyla ilgilidir. Kayıt defterinden okunan değeri depolamak için ayrılan alan yetersizse, varsayılan değer olan False'a geri döner.

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır ve Microsoft, ürünün gelecek sürümlerinde bir çözüm üzerinde çalışmaktadır.