ฉันมีโครงการตัวช่วยซึ่งฉันใช้ในแอปพลิเคชันทั้งหมดที่ฉันสร้าง มันมีวิธีการขยายและเรียนผู้ช่วยทั่วไปการควบคุม ฯลฯ ฉันอัปเดต / ขยายโครงการผู้ช่วยเป็นครั้งคราว เหล่านี้มักเป็นโครงการขนาดเล็กและไม่เกี่ยวข้องและฉันเป็นคนเดียวที่ทำงานกับพวกเขาทั้งหมด
ฉันลองสองวิธีในการใช้
- เพิ่มไฟล์. cs โดยตรง (เพิ่มลิงค์) ไปยังแต่ละโครงการที่ฉันใช้
- รวบรวมเป็น. dll และเพิ่มเป็นข้อมูลอ้างอิง
ฉันเห็นประโยชน์และข้อเสียของวิธีการเหล่านี้
คนแรก:
- นั้นง่ายกว่าเนื่องจากคลาสตัวช่วยได้รับการคอมไพล์เป็นไฟล์ exe ดังนั้นฉันมักจะสามารถให้ไฟล์. exe เพียงไฟล์เดียวที่ใช้งานได้ดี เนื่องจากฉันเพิ่มเป็นลิงก์ฉันจึงมั่นใจได้ว่าเมื่อใดก็ตามที่ฉันสร้างโครงการใด ๆ ที่ใช้ตัวช่วยเหลือไฟล์ผู้ช่วยเหลือจะเป็นเวอร์ชันล่าสุด
- ยิ่งง่ายขึ้นเพราะฉันสามารถแยกไฟล์เพื่อให้วิธีการขยายของฉันที่ทำงานได้ดีบน. NET 4.0 สามารถอ้างอิงแยกต่างหากจากวิธีที่ต้องใช้. NET 4.5 ซึ่งหมายความว่าแอปโดยรวมสามารถทำงานบน. NET 4.0 ได้
- ช่วยให้การแก้จุดบกพร่องผ่านรหัสที่มีประโยชน์ทั้งหมดของเบรกพอยต์ ฯลฯ ฯลฯ ...
- ดูเหมือนจะไม่ใช่ 'การปฏิบัติที่ดีที่สุด'
คนที่สอง:
- ดูเหมือนจะเป็นแนวทางที่ถูกต้อง แต่:
- ต้องการให้ฉันส่งไฟล์. dll แยกต่างหากซึ่งด้วยเหตุผลบางอย่างยากกว่าสำหรับผู้ใช้ (พวกเขามักจะแบ่งปันโปรแกรมของฉันโดยไม่ใช้. dll ซึ่งจะล่มเมื่อเริ่มต้น)
- เนื่องจากมันได้รับการรวบรวมเป็น. dll เดียวมันจะต้องใช้. NET เวอร์ชั่นสูงสุด - ผู้ใช้ของฉันจำนวนมากไม่มี. NET 4.5 และมีเพียงองค์ประกอบบางส่วนของระดับผู้ช่วยของฉันต้องการสิ่งนี้ซึ่งหมายความว่าฉันสามารถบังคับให้บางคน เพื่ออัปเดตระบบของพวกเขาโดยไม่มีเหตุผล
- ฉันยังต้องตรวจสอบให้แน่ใจว่าเมื่อใดก็ตามที่ฉันอัปเดตโปรแกรมใด ๆ ของฉันฉันยังส่งไฟล์. dll - แม้ว่าฉันจะไม่รู้ว่ามีการเปลี่ยนแปลงตั้งแต่รุ่นล่าสุดหรือไม่ (อาจเป็นไปได้ แต่มัน อาจเป็นเวอร์ชั่นเดียวกันก็ได้) ฉันไม่เห็นวิธีง่าย ๆ ในการพิจารณาว่าโดยไม่ติดตามรุ่นชุดประกอบซึ่งเป็นงานเพิ่มเติม สำหรับตอนนี้เมื่อฉันอัปเดตโปรแกรมของฉันฉันจะส่งเฉพาะ exe ที่อัปเดตแล้วเท่านั้นและฉันต้องการให้โปรไฟล์มีขนาดเล็กและต่ำ
ดังนั้นประโยชน์ที่แท้จริงของการใช้ไฟล์. dll ที่นี่คืออะไร โปรดทราบว่าฉันเป็นคนเดียวที่แก้ไขรหัสของแอปพลิเคชันทั้งหมดและไฟล์ตัวช่วย
นอกจากนี้เพื่อชี้แจง - แอปมักจะน้อยมากในขณะที่รหัสที่มีอยู่ในชั้นเรียนของผู้ช่วยนั้นเป็นเรื่องธรรมดาสำหรับพวกเขาทั้งหมด (การเปรียบเทียบสตริงแบบง่าย ๆ เส้นทางหรือการดำเนินงาน XML ฯลฯ )
จริงๆแล้วมีคนทำให้ฉันรู้ว่าตอนนี้มีตัวเลือกที่สาม เนื่องจากฉันมีรหัสตัวช่วยในโครงการ separte ฉันสามารถเพิ่มโครงการนี้เพื่อแก้ปัญหาของแต่ละแอปพลิเคชันของฉัน - ซึ่งทำงานเหมือนกับ 'Add as link' สำหรับไฟล์เดียวยกเว้นฉันเพิ่มเพียงโครงการเดียว ... แต่ ดังที่ Doc Brown สังเกตเห็นว่านี่จำเป็นต้องมีการเพิ่ม. dll ลงในโครงการต่อไป ...
อีกสิ่งหนึ่งที่ไม่ควรใช้ไฟล์ dll ก็คือความสามารถในการดีบั๊กผ่านคลาสตัวช่วย ...