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:
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.