ฉันเกี่ยวข้องกับการดูแลรักษาผลงานแอปพลิเคชั่น. NET ค่อนข้างมาก นอกจากนี้ในพอร์ตโฟลิโอยังมีแอพพลิเคชั่นรุ่นเก่าที่สร้างขึ้นบนแพลตฟอร์มอื่น ๆ เช่น C ++, ECLIPS Forms
ฉันมีกรอบการสร้างที่ซับซ้อนด้านบนของ NAnt ในขณะนี้ที่จัดการการสร้างสำหรับแอปพลิเคชันเหล่านี้ทั้งหมด กรอบการสร้างใช้ NAnt ในการทำสิ่งต่าง ๆ มากมาย:
- ดึงรหัสออกมาจากการโค่นล้มเช่นเดียวกับการสร้างแท็กในการโค่นล้ม
- สร้างรหัสโดยใช้ MSBuild สำหรับ. NET หรือคอมไพเลอร์อื่น ๆ สำหรับแพลตฟอร์มอื่น ๆ
- ดูภายในไฟล์ AssemblyInfo เพื่อเพิ่มหมายเลขรุ่น
- ทำการลบไฟล์บางไฟล์ที่ไม่ควรรวมอยู่ในบิลด์ / รีลีส
- เผยแพร่รหัสไปยังโฟลเดอร์การปรับใช้
- รหัสไปรษณีย์ขึ้นเพื่อการสำรองข้อมูล
- ปรับใช้บริการ Windows เริ่มและหยุดพวกเขา
- เป็นต้น
สิ่งเหล่านี้ส่วนใหญ่สามารถทำได้เพียงแค่ NAnt ด้วยตัวเอง แต่เราสร้างงานเสริมสองสามอย่างสำหรับ NAnt เพื่อทำบางสิ่งที่เฉพาะเจาะจงกับสภาพแวดล้อมของเรา นอกจากนี้กระบวนการเหล่านี้ส่วนใหญ่ถูกทำให้เป็นรูปแบบทั่วไปและนำกลับมาใช้ใหม่ในสคริปต์การสร้างแอปพลิเคชันที่แตกต่างกันจำนวนมากของเราเพื่อที่เราจะได้ไม่ต้องทำซ้ำตรรกะ ดังนั้นจึงไม่ใช่รหัส NAnt ที่ง่ายและไม่ใช่สคริปต์การสร้างที่เรียบง่าย มีไฟล์ NAnt หลายสิบไฟล์ที่มารวมกันเพื่อเรียกใช้งานบิลด์
เมื่อเร็ว ๆ นี้ฉันไม่พอใจกับ NAnt ด้วยเหตุผลสองสามประการ: (1) มันเป็นไวยากรณ์ที่แย่มาก - ภาษาการเขียนโปรแกรมบน XML นั้นยอดเยี่ยมมากในการรักษา (2) โครงการดูเหมือนจะตายบนเถาวัลย์ เมื่อไม่นานมานี้มีการอัปเดตมากมายและดูเหมือนว่าไม่มีใครสามารถควบคุมได้ การพยายามทำให้มันทำงานกับ. NET 4 ได้ก่อให้เกิดอาการปวดจุดเนื่องจากการขาดกิจกรรมนี้
ดังนั้นด้วยพื้นหลังทั้งหมดที่อยู่ห่างไกลนี่คือคำถามของฉัน ให้บางสิ่งที่ฉันต้องการสำเร็จตามรายการข้างต้นและระบุว่าฉันเป็นหลักในร้าน NET. แต่ฉันยังต้องสร้างโครงการที่ไม่ใช่. NET มีทางเลือกอื่นที่ฉันควรพิจารณา เปลี่ยนเป็น?
สิ่งที่อยู่ในเรดาร์ของฉันรวมถึงPowershell (มีหรือไม่มีpsake ) MSBuildด้วยตัวเองและคราด สิ่งเหล่านี้ล้วนมีข้อดีและข้อเสีย ตัวอย่างเช่น MSBuild มีประสิทธิภาพเพียงพอหรือไม่ ฉันจำได้ว่าใช้มันเมื่อหลายปีก่อนและมันก็ไม่ได้มีพลังมากเท่า NAnt ฉันต้องการให้ทีมของฉันเรียนรู้ทับทิมเพื่อสร้างงานโดยใช้เรคหรือไม่? psake เป็นผู้ใหญ่มากพอที่โครงการจะยึดพอร์ตโฟลิโอของฉัน? Powershell "ใกล้กับโลหะมากเกินไป" หรือไม่และฉันจะต้องเขียนห้องสมุดสร้างของฉันเองเพื่อคล้ายกับ psake เพื่อใช้มันด้วยตัวเองหรือไม่?
มีเครื่องมืออื่นที่ฉันควรพิจารณาหรือไม่? หากคุณมีส่วนเกี่ยวข้องกับการดูแลรักษาพอร์ตโฟลิโอของ. NET ของความซับซ้อนที่สำคัญคุณจะต้องสร้างเครื่องมืออะไร ทีมของคุณใช้อะไรในปัจจุบัน