มันไม่สำคัญเลยที่จะสร้างไฟล์. NET สำหรับ. DLL และด้วยเหตุผลที่ดี กลไกการกำหนดค่า. NET มีคุณสมบัติมากมายที่ติดตั้งไว้ภายในเพื่อให้ง่ายต่อการอัพเกรด / อัปเดตแอพและเพื่อปกป้องแอปที่ติดตั้งจากการเหยียบย่ำไฟล์การกำหนดค่าอื่น ๆ
มีความแตกต่างอย่างมากระหว่างวิธีการใช้ DLL กับวิธีการใช้แอปพลิเคชัน คุณไม่น่าจะติดตั้งแอปพลิเคชันหลายชุดในเครื่องเดียวกันสำหรับผู้ใช้รายเดียวกัน แต่คุณอาจมีแอพหรือไลบรารี่ที่แตกต่างกัน 100 แอปทั้งหมดใช้ประโยชน์จาก. NET DLL บางตัว
ในขณะที่ไม่จำเป็นต้องติดตามการตั้งค่าแยกต่างหากสำหรับสำเนาของแอพที่แตกต่างกันภายในโปรไฟล์ผู้ใช้หนึ่งโปรไฟล์มันไม่น่าเป็นไปได้มากที่คุณจะต้องการให้การใช้งาน DLL ที่แตกต่างกันทั้งหมดเพื่อแบ่งปันการกำหนดค่า ด้วยเหตุผลนี้เมื่อคุณดึงข้อมูลวัตถุการกำหนดค่าโดยใช้วิธี "ปกติ" วัตถุที่คุณได้รับกลับมาจะเชื่อมโยงกับการกำหนดค่าของโดเมนแอพที่คุณใช้งานอยู่แทนที่จะเป็นแอสเซมบลีเฉพาะ
App Domain ถูกผูกไว้กับชุดประกอบรูทซึ่งโหลดชุดประกอบซึ่งรหัสของคุณเป็นจริงในกรณีส่วนใหญ่จะเป็นชุดประกอบของ. EXE หลักของคุณซึ่งเป็นชุดโหลด. DLL เป็นไปได้ที่จะหมุนโดเมนแอปอื่นภายในแอปพลิเคชัน แต่คุณต้องให้ข้อมูลอย่างชัดเจนเกี่ยวกับแอสเซมบลีรูทของโดเมนแอปนั้น
ด้วยเหตุนี้กระบวนการในการสร้างไฟล์ปรับแต่งเฉพาะไลบรารีจึงไม่สะดวก มันเป็นกระบวนการเดียวกับที่คุณจะใช้สำหรับการสร้างโดยพลไฟล์ config แบบพกพาไม่เชื่อมโยงกับการชุมนุมใด ๆ โดยเฉพาะ แต่ที่คุณต้องการที่จะทำให้การใช้งานของเค้าร่าง XML .NET ของส่วนปรับแต่งการตั้งค่าและองค์ประกอบกลไก ฯลฯ สร้างความนี้สร้างExeConfigurationFileMap
วัตถุ การโหลดข้อมูลเพื่อระบุตำแหน่งที่ไฟล์ config ConfigurationManager
จะถูกเก็บไว้แล้วโทร OpenMappedExeConfiguration
ที่จะเปิดมันขึ้นไปใหม่Configuration
เช่น สิ่งนี้จะตัดคุณออกจากการป้องกันเวอร์ชันที่เสนอโดยกลไกการสร้างพา ธ อัตโนมัติ
คุณอาจใช้ห้องสมุดนี้ในการตั้งค่าภายในองค์กรและไม่น่าเป็นไปได้ที่คุณจะมีแอพจำนวนมากที่ใช้งานภายในเครื่อง / ผู้ใช้รายใดรายหนึ่ง แต่ถ้าไม่มีมีบางสิ่งที่คุณควรจำไว้ หากคุณใช้ไฟล์กำหนดค่าส่วนกลางเดียวสำหรับ DLL ของคุณโดยไม่คำนึงถึงแอปที่อ้างอิงถึงไฟล์คุณต้องกังวลเกี่ยวกับความขัดแย้งในการเข้าถึง หากแอปสองตัวที่อ้างอิงไลบรารีของคุณกำลังทำงานในเวลาเดียวกันแต่ละแอปจะเป็นของตัวเองConfiguration
เปิดวัตถุจากนั้นเมื่อแอปบันทึกการเปลี่ยนแปลงมันจะทำให้เกิดข้อยกเว้นในครั้งถัดไปที่คุณพยายามดึงหรือบันทึกข้อมูลในแอปอื่น
วิธีที่ปลอดภัยและง่ายที่สุดในการหลีกเลี่ยงปัญหานี้คือต้องการให้แอสเซมบลีที่กำลังโหลด DLL ของคุณยังให้ข้อมูลบางอย่างเกี่ยวกับตัวเองหรือตรวจสอบโดยการตรวจสอบโดเมนแอพของแอสเซมบลีอ้างอิง ใช้สิ่งนี้เพื่อสร้างโครงสร้างโฟลเดอร์สำหรับเก็บไฟล์กำหนดค่าผู้ใช้แยกต่างหากสำหรับแต่ละแอปที่อ้างถึง DLL ของคุณ
หากคุณแน่ใจว่าคุณต้องการตั้งค่าส่วนกลางสำหรับ DLL ของคุณไม่ว่าจะถูกอ้างอิงที่ไหนคุณจะต้องระบุตำแหน่งของคุณแทนการใช้. NET จะหาตำแหน่งที่เหมาะสมโดยอัตโนมัติ นอกจากนี้คุณจะต้องเข้มงวดเกี่ยวกับการจัดการการเข้าถึงไฟล์ คุณจะต้องแคชให้มากที่สุดเท่าที่จะเป็นไปได้เก็บConfiguration
อินสแตนซ์ไว้รอบ ๆ เท่านั้นตราบใดที่ใช้ในการโหลดหรือบันทึกเปิดทันทีก่อนและทิ้งทันทีหลังจากนั้น และในที่สุดคุณจะต้องมีกลไกการล็อคเพื่อป้องกันไฟล์ในขณะที่มันกำลังถูกแก้ไขโดยหนึ่งในแอพที่ใช้ไลบรารี