เรามีโปรเจ็กต์ asp.net 4.0 ซึ่งใช้เฟรมเวิร์กสองสามตัวซึ่งขึ้นอยู่กับ log4net เวอร์ชัน 1.2.10.0 วันนี้ฉันพยายามรวมเฟรมเวิร์กใหม่ซึ่งขึ้นอยู่กับ log4net เวอร์ชัน 1.2.11.0 ฉันก็ติดตั้งแต่นั้นมา:
log4net 1.2.10.0 มี publickeytoken = 1b44e1d426115821
log4net 1.2.11.0 มี publickeytoken = 669e0ddf0bb1aa2a
เนื่องจากสิ่งเหล่านี้แตกต่างกันฉันจึงไม่สามารถใช้การเปลี่ยนเส้นทางแอสเซมบลี (เพื่อให้เฟรมเวิร์กทั้งหมดใช้ log4net เวอร์ชันเดียวกัน) หรือโค้ดเบส (เพื่อให้มีเพียงเฟรมเวิร์กใหม่ใช้เวอร์ชัน 1.2.11.0) ผ่านองค์ประกอบรันไทม์ใน web.config
ตัวเลือกของฉันที่นี่มีอะไรบ้าง?
(และเหตุใด log4net จึงเปลี่ยน publickeytokens ไปมาระหว่างเวอร์ชันเนื่องจากฉันเข้าใจว่าคีย์ที่หายไปเป็นสาเหตุของการสลับระหว่างเวอร์ชัน 1.2.9.0 และ 1.2.10.0 พวกเขาทำคีย์หายอีกหรือไม่ฉันจะอาสาดรอปบ็อกซ์ของฉัน เพื่อให้ปลอดภัยหากพวกเขาต้องการ ... )
แก้ไข: ตกลงดังนั้นพวก log4net จึงมีความคิดที่ว่าการปล่อยปุ่มสองปุ่มเป็นความคิดที่ดี แต่นั่นหมายความว่าทุกเฟรมเวิร์กที่คุณใช้จำเป็นต้องตกลงว่าจะเลือกรสชาติใดจากสองรสชาติที่พวกเขาต้องการหรือกรอบงานเหล่านั้นไม่สามารถทำงานได้ เคียงข้างกันใน appdomain เดียวกัน ฉันเป็นคนเดียวที่พบความคิดที่น่ากลัวนี้หรือไม่? ถ้าทุกคนทำอย่างนี้ทุกอย่างจะพังใช่ไหม?
Edit2: ตามที่ฉันระบุไว้ฉันไม่ได้ใช้ log4net ในรหัสธุรกิจของฉัน แต่ฉันใช้เฟรมเวิร์กหลายอันซึ่งขึ้นอยู่กับ 1.2.10.0 และปัญหาเกิดขึ้นเมื่อฉันพยายามใช้เฟรมเวิร์กใหม่ซึ่งขึ้นอยู่กับ 1.2.11.0 (คีย์ใหม่ ) ดังนั้นคำตอบของ Stefans จึงใช้ไม่ได้เพราะกรอบงานใหม่จะคาดหวังคีย์ใหม่ไม่ใช่คีย์เก่า