แอปพลิเคชั่นหลายรายการในโซลูชัน Visual Studio เดียว [ปิด]


17

ฉันทำงานให้กับ บริษัท ที่ต้องการรวมแอปพลิเคชั่น. Net ทั้งหมด (เว็บแอปพลิเคชันแอพพลิเคชั่น Windows และแอพพลิเคชั่นคอนโซล) เข้าด้วยกันในโซลูชัน Visual Studio เดียว

ฉันกำลังมองหาประสบการณ์จากนักพัฒนาที่จัดโครงสร้างแอปพลิเคชันของตนเองด้วยวิธีนี้หรือทำงานใน บริษัท ที่ทำสิ่งนี้ นี่เป็นความคิดที่ดีหรือไม่?

  • อะไรคือข้อดี / ข้อเสียของการนำแอปพลิเคชั่นทั้งหมดของคุณไปไว้ในโซลูชันเดียวแทนที่จะมีโซลูชันแยกต่างหากสำหรับแต่ละแอปพลิเคชัน

  • Visual Studio มีวิธีการแก้ปัญหาเร็วกว่า 20 โปรเจคหรือไม่

  • และไฟล์โซลูชันที่มีความเสถียรพร้อมการพัฒนาพร้อมกันที่ควบคุมโดยซอร์สได้อย่างไร?


โปรดทราบว่าคำตอบอาจเฉพาะเจาะจงกับ Visual Studio รุ่นที่เฉพาะเจาะจง
stakx

คำตอบ:


21

เมื่อเร็ว ๆ นี้เราได้โยกย้ายซอร์สโค้ดเกือบทั้งหมดใน บริษัท ของฉันไปยังโซลูชันเดียว

ทำไม?

เดิมทีเรามีวิธีแก้ปัญหาหลายสิบวิธี บางโครงการจากโซลูชันนำโครงการกลับมาใช้ใหม่อีกโครงการหนึ่งและไม่มีใครสนใจเกี่ยวกับการใช้ตัวจัดการแพคเกจ วันที่คุณเปลี่ยนโครงการที่ใช้เกือบทุกที่คาดหวังว่าจะมีชั่วโมงและเวลาทำงานที่สูญเสียทั้ง บริษัท ในวันถัดไปหรือสัปดาห์ถัดไป ส่วนที่แย่ที่สุดคือคุณไม่รู้อะไรเลยจะได้รับผลกระทบจากการเปลี่ยนแปลง

การรวมรหัสทั้งหมดเข้าในโซลูชันเดียวเป็นทางเลือก มันใช้งานได้ดีในขณะนี้และตอนนี้การพึ่งพาง่ายต่อการติดตาม ต้องการที่จะปรับเปลี่ยนวิธีการ แต่ยังติดตามผลกระทบการเปลี่ยนแปลงนี้อาจมีที่ใดก็ได้ในฐานรหัส? Visual Studio สามารถทำได้อย่างง่ายดาย สำหรับฉันมันประสบความสำเร็จ

การรวมอย่างต่อเนื่องก็ง่ายขึ้นเช่นกัน ทางออกหนึ่งในการรวบรวมและปรับใช้ เกือบจะไม่มีการกำหนดค่าใด ๆ

ปรับขนาดได้หรือไม่

ผลการดำเนินงานที่ชาญฉลาดฉันรู้สึกประหลาดใจมากโดย Visual Studio ฉันคิดว่ามันจะเริ่มร้องไห้ด้วยวิธีแก้ปัญหาด้วยพูด 50 โครงการ วันนี้มีมากกว่า 200 โครงการ Visual Studio ดูเหมือนจะปรับขนาดได้เพียงพอที่จะจัดการพวกเขาราวกับว่ามีเพียง 20 คนเท่านั้น ใช่มีหลายสิ่งที่ต้องใช้เวลา หากคุณคอมไพล์ใหม่ทุกโครงการโดยมีสัญญา Code, การวิเคราะห์ Code ที่เปิดใช้งานโดยค่าเริ่มต้นเป็นต้นคาดว่าจะใช้เวลาสักครู่ แต่ไม่มีใครคาดว่าจะรวบรวม 200 โครงการเร็วที่สุดเท่าที่ 10 และไม่ควรทำเช่นนี้นั่นคือบทบาทของเซิร์ฟเวอร์การรวมอย่างต่อเนื่อง เวลาเริ่มต้น (เริ่มเย็นแล้วโหลดโซลูชัน) นั้นรวดเร็วอย่างน่าประทับใจ ; อาจจะไม่เร็วเท่ากับ 10 โครงการ แต่ก็ยังเป็นที่ยอมรับมาก (ภายใน 20 วินาทีบนเครื่องที่ซื้อมานานกว่าห้าปีที่แล้ว)

หากต้องการดำเนินการเพิ่มเติมให้ขนถ่ายโครงการอย่างเป็นระบบเป็นความคิดที่ดี (และง่ายมากเมื่อจัดโครงการในไดเรกทอรีภายในโซลูชัน) หากใครบางคนทำงานกับบางสิ่งที่ต้องการโหลดเพียงสามโครงการก็ไม่จำเป็นต้องโหลดโครงการทั้งหมด 200 โครงการ (เว้นแต่แน่นอนว่าการพึ่งพาอาจได้รับผลกระทบ)

การควบคุมเวอร์ชันทำงานได้ตามที่คาดหวังเช่นกัน (ฉันใช้เซิร์ฟเวอร์ SVN หากมีความสำคัญ) ฉันไม่ได้ทำงานในสภาพแวดล้อมที่เกิดขึ้นพร้อมกันจริง ๆ ด้วยนักพัฒนาหลายคนที่ยอมรับโค้ดบ่อยครั้ง แต่ฉันคิดว่ามันจะไม่มีปัญหามากเกินไป เพียงระวังกรณีที่นักพัฒนาจำนวนมากเพิ่มโครงการใหม่ในเวลาเดียวกัน: การรวมไฟล์. sln ไม่ใช่สิ่งที่ง่ายที่สุดในการทำ

ข้อสรุป

ถ้าฉันต้องเลือกการตัดสินใจอีกครั้ง:

  1. ฉันจะยังคงโยกย้ายทุกอย่างเป็นโซลูชั่นเดียว สิ่งนี้จะช่วยลดความเจ็บปวดจากการพึ่งพาที่แตกสลายอย่างมหาศาลและประโยชน์นี้เพียงอย่างเดียวก็คุ้มค่า การมีสถานที่รวมศูนย์สำหรับรหัสทั้งหมดเป็นความคิดที่ดีเช่นกัน สิ่งนี้ทำให้เป็นไปได้ในการค้นหาบางสิ่งภายใน Visual Studio ฉันยังสามารถทำงานในสองโครงการที่เกี่ยวข้องอย่างอ่อนแอและยังคงเปิดหน้าต่าง Visual Studio เพียงหน้าต่างเดียว

  2. ฉันจะศึกษา NuGet อีกเล็กน้อยและความสามารถในการโฮสต์เซิร์ฟเวอร์ NuGet ส่วนตัว การจัดการการพึ่งพาผ่าน NuGet สามารถแก้ไขปัญหาบางอย่างเมื่อคุณไม่ต้องการรวมโครงการบางอย่างเข้ากับโซลูชันทั่วไป โดยส่วนตัวฉันไม่มีกรณีเช่นนี้ แต่ฉันคิดว่า บริษัท อื่นอาจมี

  3. ในที่สุดการลงทุนใน SSD สำหรับนักพัฒนาทุกคนสามารถสร้างความแตกต่างอย่างมาก แต่คุณไม่จำเป็นต้องและในกรณีของฉันฐานรหัสยังคงเก็บไว้ในฮาร์ดไดรฟ์ธรรมดา


2
เพียงบางจุด FYI: คุณสามารถเปิดโครงการผ่านไฟล์. csproj ใน VS หากความเร็ว / ประสิทธิภาพเป็นปัญหา NuGet "เซิร์ฟเวอร์ส่วนตัว" เป็นเพียงโฟลเดอร์เครือข่าย (และเพิ่มโฟลเดอร์นั้นเป็นตำแหน่งแหล่งแพ็กเกจใน VS) - เพียงแค่วางไฟล์ nupkg ที่นั่นและใช้งานได้
Steven Evers

ขอบคุณ MainMa สำหรับการแบ่งปันประสบการณ์ของคุณด้วยการตั้งค่าโซลูชันเดียว คำตอบที่ละเอียดและเป็นประโยชน์ การสำรองห้องพักที่ฉันมีคือการมีแอปพลิเคชันทั้งหมดเข้าด้วยกันในโซลูชันเดียวคือต้องให้นักพัฒนารุ่นใหม่เข้าถึงทุกสิ่งได้ เราใช้ Ankhsvn และฉันอยากให้ URL สำหรับนักพัฒนารุ่นใหม่สำหรับแอปพลิเคชันเดียวที่ฉันต้องการให้พวกเขาทำงานได้ดีกว่าให้พวกเขาเข้าถึงทุกสิ่ง ความคิดใด ๆ เกี่ยวกับเรื่องนี้?
BruceHill

@BruceHill: ด้วย SVN คุณสามารถกำหนดค่าได้อย่างแม่นยำว่าใครสามารถเข้าถึงอะไรได้บ้าง ผู้พัฒนารุ่นเยาว์จะยังสามารถเห็นทุกไดเรกทอรีราก (ดูคำถามของฉันเกี่ยวกับความผิดพลาดของเซิร์ฟเวอร์ ) แต่จะไม่สามารถเข้าถึงโครงการที่ถูก จำกัด
Arseni Mourzenko

2
การทำงานกับ บริษัท ขนาดใหญ่ไม่กี่แห่งที่มีทีมนักพัฒนาซอฟต์แวร์ขนาดใหญ่ที่ยอมรับรหัสทุกวันฉันสามารถบอกคุณได้ว่าวิธีการแก้ปัญหาแบบเดี่ยวไม่ได้ผล แต่ละโครงการมีค่าใช้จ่าย กำลังโหลดสิ่งปลูกสร้างและพระเจ้ารู้ว่าการสร้างล่วงหน้า / โพสต์มีขั้นตอนที่บางคนอาจติดกับโครงการดังกล่าว ขณะนี้มีทีมนักพัฒนาขนาดใหญ่คุณจะมีการเปลี่ยนแปลงในหลายโครงการในแต่ละวัน รวมการทดสอบหน่วยที่ใช้งาน ฯลฯ ด้วยการเช็คอินแต่ละครั้งสำหรับการรวมอย่างต่อเนื่องและจากนั้นคุณมีค่าใช้จ่ายมากขึ้น มีโซลูชันเดียวต่อหน่วยที่สามารถปรับใช้ได้ (บริการเว็บไซต์) และใช้ตัวจัดการแพ็คเกจเช่น NuGet
เรียนรู้เสมอ

8

นี่คือการใช้งานที่ตั้งใจไว้

อะไรคือข้อดี / ข้อเสียของการนำแอปพลิเคชั่นทั้งหมดของคุณไปไว้ในโซลูชันเดียวแทนที่จะมีโซลูชันแยกต่างหากสำหรับแต่ละแอปพลิเคชัน

  • ข้อดี:
    • การอ้างอิงที่ง่ายขึ้นระหว่างโครงการ
    • แก้ไขข้อบกพร่องได้ง่ายขึ้น / ก้าวผ่าน
    • ง่ายต่อการแนบกับกระบวนการ (เช่นคุณกำลังก้าวผ่านบริการ windows เมื่อมันข้ามไปยังรหัสห้องสมุดที่ใช้ร่วมกันและมันก็ใช้งานได้เพราะสัญลักษณ์ทั้งหมดได้รับการโหลดและบันทึกไว้แล้ว)
    • การค้นหารหัสใน IDE ใช้งานได้ดีขึ้น (คุณไม่จำเป็นต้องรู้รหัสโครงการที่คุณกำลังค้นหาอยู่)
    • การเปลี่ยนแปลงข้ามโครงการนั้นง่ายต่อการจัดการ (เช่นคุณเปลี่ยนรหัสห้องสมุดดังนั้นคุณต้องอัปเดตรหัสลูกค้าในเวลาเดียวกันด้วยการเช็คอิน 1 ครั้ง)
  • ข้อเสีย:
    • สร้างความเร็ว: หากคุณอยู่ในนิสัยของ "สร้างใหม่ทั้งหมด" ดังนั้นงานสร้างใช้เวลานานกว่า การสร้างที่นานขึ้นและการต่อเติมบางครั้งก็มีพฤติกรรมขี้ขลาด
    • ความเร็ว ide: ดูต่อไป

Visual Studio มีวิธีการแก้ปัญหาเร็วกว่า 20 โปรเจคหรือไม่

ด้วยโครงการกว่า 20 โครงการ ... อาจไม่เลวร้ายนัก ฉันเห็นมากขึ้นโดยไม่มี VS ที่มีปัญหา มันค่อนข้างเสถียร / รวดเร็ว อย่างไรก็ตามถ้าเป็นปัญหาก็สามารถบรรเทาได้: เปิด. csproj ใน VS และทำงานจากที่นั่น คุณไม่ได้รับประโยชน์จากการมีทุกอย่างในโซลูชันเดียว แต่คุณสามารถเปิด sln ใหม่ได้ทุกเมื่อที่คุณต้องการและทำงานใน. csproj เมื่อคุณต้องการ (เหมือนที่คุณทำตอนนี้)

และไฟล์โซลูชันที่มีความเสถียรพร้อมการพัฒนาพร้อมกันที่ควบคุมโดยซอร์สได้อย่างไร?

ไฟล์โซลูชันจะเปลี่ยนแปลงเฉพาะเมื่อคุณเพิ่ม / ลบโปรเจ็กต์หรือวัตถุระดับโซลูชันดังนั้นจึงไม่ค่อยเปลี่ยนแปลง มันคือ xml ดังนั้นคุณจะเห็นว่ามีอะไรอยู่ในนั้น พวกเขาเปลี่ยนไม่ค่อย


Steve คุณพูดว่า"นี่เป็นการใช้งานที่ตั้งใจไว้" คุณสามารถให้การอ้างอิงสำหรับสิ่งนี้ได้หรือไม่? ขอบคุณ!
ปรับปรุงใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.