อาการ
สมมติว่า คุณมี Microsoft .NET Framework 4.7 ที่ติดตั้งบนคอมพิวเตอร์ คุณอาจสังเกตเห็นว่า โปรแกรมประยุกต์ที่เรียกใช้.NET Framework ไม่ปฏิบัติตามการตั้งค่าความเข้ากันได้ที่ระบุไว้ในรีจิสทรีสำหรับสวิตช์ AppContext ในสถานการณ์สมมตินี้ เมื่อคุณพยายามที่จะตั้งค่าตัวเลือกรีจิสทรีสำหรับการค่าสถานะ AppContext นั้นทำงานเหมือนกับว่ามีตั้งค่าที่ระบุไว้ในตัวเลือกรีจิสทรีเป็นFalse
สาเหตุ
เมื่อโปรแกรมอ่านค่าของสวิตช์ตัว AppContext ในรีจิสทรี ไม่สามารถเรียกข้อมูล ในกรณีนี้ จะถือว่า บางสิ่งบางอย่างไม่ถูกต้องกับวิธีการมีระบุการตั้งค่าในรีจิสทรี และค่าFalseจะถูกส่งกลับไปยังโปรแกรมประยุกต์
การแก้ปัญหา
เมื่อต้องการแก้ไขปัญหานี้ ใช้ไฟล์การตั้งค่าคอนฟิก (แบบpp.config) แอพลิเคชันเพื่อตั้งค่าสถานะเป็นค่าที่ต้องการ
เพิ่มองค์ประกอบ< AppContextSwitchOverrides ><รันไทม์ >ส่วนของแฟ้มapp.config สวิตช์มีคุณลักษณะเดียว นั่นคือค่ามีค่าเป็นสตริงที่แสดงถึงคู่ของคีย์หรือค่าที่ประกอบด้วยทั้งชื่อของสวิตช์และค่า
เมื่อต้องการกำหนดสวิตช์หลาย แยกคู่คีย์หรือค่าของสวิตช์แต่ละแบบในแบบ <AppContextSwitchOverrides>แอตทริบิวต์ value ขององค์ประกอบ ด้วยเครื่องหมายอัฒภาค ในกรณีดังกล่าว องค์ประกอบ <AppContextSwitchOverrides> มีรูปแบบดังต่อไปนี้:
XML
<AppContextSwitchOverrides value=”switchName1=value1;switchName2=value2” />
ใช้องค์ประกอบ< AppContextSwitchOverrides >เพื่อกำหนดการตั้งค่าการตั้งค่าคอนฟิกที่มีขอบเขตของแอพลิเคชัน นั่นคือ จะมีผลกับแอพลิเคชันเท่านั้น
เนื่องจากแฟ้มapp.configเฉพาะแอพลิเคชัน คุณต้องทำเช่นนี้สำหรับโปรแกรมประยุกต์ทั้งหมดที่ได้รับผลกระทบ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ AppContext ไปหัวข้อต่อไปนี้บนเว็บไซต์ Microsoft Developer Network (MSDN):
ข้อมูลเพิ่มเติม
ปัญหานี้ถูกนำมาใช้เป็นส่วนหนึ่งของงานเพื่อเปิดใช้งานสวิตช์ AppContext ที่จะใช้ในวงจรชีวิตของการ AppDomain แรกสุด การเปลี่ยนแปลงที่จะมิฉะนั้นแบ่งไว้อย่างปลอดภัย ถึงแม้ว่ารหัสที่จำเป็นต้องใช้สวิตช์ AppContext การรันแรกสุด AppDomain นำสาย นี้ใช้ได้
มีปัญหาเกี่ยวกับการจัดสรรจำนวนหน่วยความจำเพื่อเก็บค่าที่ถูกอ่านจากรีจิสทรี ถ้าพื้นที่ปันส่วนเมื่อต้องการเก็บค่าที่ถูกอ่านจากรีจิสทรีไม่เพียงพอ ก็จะถอยกลับไปใช้ค่าเริ่มต้นของเท็จ
สถานะ
Microsoft ยืนยันว่า นี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "Applies to" และ Microsoft กำลังทำงานกับวิธีแก้ไขปัญหาในรุ่นผลิตภัณฑ์กำลังเกิดขึ้น