เหตุใดจึงจำเป็นต้องมีการเปลี่ยนเส้นทางที่มีผลผูกพัน สมมติว่าคุณมีแอปพลิเคชัน A ที่อ้างอิงไลบรารี B และไลบรารี C ของเวอร์ชัน 1.1.2.5 ด้วย ในทางกลับกันไลบรารี B ยังอ้างอิงไลบรารี C แต่เป็นเวอร์ชัน 1.1.1.0 ตอนนี้เรามีข้อขัดแย้งเนื่องจากคุณไม่สามารถโหลดแอสเซมบลีเดียวกันเวอร์ชันต่างๆที่รันไทม์ได้ ในการแก้ไขข้อขัดแย้งนี้คุณอาจใช้การเปลี่ยนเส้นทางการเชื่อมโยงโดยปกติจะเป็นเวอร์ชันใหม่ (แต่สามารถใช้กับเวอร์ชันเก่าได้เช่นกัน) คุณทำได้โดยการเพิ่มต่อไปนี้ไปยังแฟ้ม app.config ของการประยุกต์ใช้ภายใต้configuration > runtime > assemblyBinding
ส่วน (ดูที่นี่เพื่อดูตัวอย่างไฟล์ config เต็ม):
<dependentAssembly>
<assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
คุณยังสามารถระบุช่วงของเวอร์ชันที่จะแมปได้:
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
ตอนนี้ไลบรารี B ซึ่งรวบรวมโดยอ้างอิงถึง C ของเวอร์ชัน 1.1.1.0 จะใช้ C ของเวอร์ชัน 1.1.2.5 ในขณะรันไทม์ แน่นอนคุณควรตรวจสอบให้แน่ใจว่าไลบรารี C สามารถใช้งานร่วมกันได้แบบย้อนกลับหรืออาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
คุณสามารถเปลี่ยนเส้นทางไลบรารีเวอร์ชันใดก็ได้ไม่ใช่เฉพาะเวอร์ชันหลัก
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"