ในงานของเราเรามีแอปพลิเคชั่น. net ที่แตกต่างกันมากมายซึ่งมีฟังก์ชั่นพื้นฐานมากมาย เราได้สร้างแอปพลิเคชันเหล่านี้โดยใช้สถาปัตยกรรมระดับ n ที่สะอาด แต่เราได้พบกับช่วงเวลาที่เราตระหนักว่าเราได้ใช้ฟังก์ชั่นเดิมซ้ำหลายครั้ง เห็นได้ชัดว่านี่เป็นการละเมิด DRY และเราต้องการแก้ไขให้ถูกต้อง เรากำลังใช้ Nuget เพื่อความสำเร็จสำหรับรหัสกาวทั่วไป (เดินสาย IoC บันทึกการตั้งค่า) แต่เราต้องการแบ่งปันข้อมูลและชั้นธุรกิจระหว่างแอปพลิเคชันทั้งหมดของเรา แนวคิดก็คือ UI จะจัดการกับส่วนต่างๆของชั้นธุรกิจที่ต้องการจริงๆเท่านั้น
สิ่งนี้ดูเหมือนว่าจะเป็นปัญหาตรงไปตรงมาในตอนแรก แต่การพัฒนาอย่างต่อเนื่องอาจทำให้เกิดข้อผิดพลาดบางอย่างและเราไม่แน่ใจว่าจะดำเนินการอย่างไร สมมติว่าเราสร้างหนึ่งชั้นธุรกิจของเราเพื่อปกครองพวกเขาทั้งหมด ฉันจะเรียกมันว่า "รากฐาน" เราแจ้งแอปพลิเคชันของเราเพื่อใช้งานมูลนิธิและทุกอย่างก็ยอดเยี่ยมมาก รากฐานถูกแจกจ่ายไปยังเลเยอร์ UI แบบแสงผ่านทาง nuget และเราดูดี แต่แล้วเราก็เริ่มเพิ่มคุณสมบัติให้กับแอปพลิเคชันของเราและเราประสบปัญหา
สมมติว่าเรากำลังทำงานในโครงการ A และเราเพิ่มคุณสมบัติใหม่ที่ต้องมีการเปลี่ยนแปลงในมูลนิธิ เราทำการเปลี่ยนแปลงรากฐาน (Foundation-A) และผลักดันพวกเขาออกไปยังฟีด nuget เป็นแพ็กเกจที่ไม่เสถียร Project A ได้รับแพ็คเกจ nuget ล่าสุดและทั้งหมดนั้นดี ในขณะเดียวกันผู้พัฒนารายอื่นกำลังทำงานในโครงการ B. เขาได้รับพื้นฐานล่าสุดจากการควบคุมแหล่ง แต่นำมาจากสาขาที่มีเสถียรภาพดังนั้นจึงไม่มีการเปลี่ยนแปลงโครงการ A เขาทำการเปลี่ยนแปลงและสร้าง Foundation-B และทุกอย่างก็ดี แต่จากนั้นเราค้นพบว่าฟังก์ชันการใช้งาน Foundation-A และ Foundation-B ที่สามารถแบ่งปันรหัสได้จริงดังนั้นเราจึงรวมมันเข้าด้วยกัน ในขณะเดียวกัน Foundation-C ก็กำลังลอยอยู่ที่นั่นด้วยการเปลี่ยนแปลงของมันเอง ในที่สุด Foundation-B ก็พร้อมสำหรับการผลิตดังนั้นเราจึงผลักมันออกไป แต่เราจำเป็นต้องอัพเดทการผลิต A, B
ดูเหมือนว่ามันจะใช้งานได้ แต่เรากังวลเกี่ยวกับการทำงานกับสกีมาฐานข้อมูลที่แตกต่างกันและทำให้ทุกอย่างตรงกันระหว่างสาขาต่าง ๆ ของที่เก็บมูลนิธิและที่เก็บโครงการ A, B และ C ดูเหมือนว่ามันอาจจะใช้เวลามากในการทำงานแบบแมนนวลซึ่งเปิดโอกาสให้เกิดข้อผิดพลาดได้ ฉันต้องการสิ่งนี้แบบอัตโนมัติที่สุด
นี่คือสแต็คที่เราใช้: C #, TFS พร้อมการรวมต่อเนื่อง, Nuget แอปพลิเคชันของเราเป็นแอปพลิเคชัน ASP.NET ทุกประเภท เรายินดีที่จะดู SCM ที่แตกต่างกันถ้ามันจะทำให้สิ่งต่าง ๆ ง่ายขึ้น
ฉันกำลังมองหาวิธีที่จะรักษา Nuget sane ด้วยรหัสแหล่งต่าง ๆ ของเรา เราไม่ต้องการที่จะผลักดันรหัสการพัฒนาไปสู่การผลิตโดยไม่ตั้งใจเพราะเราอ้างอิงแพคเกจ Nuget ที่ไม่ถูกต้อง