การจัดการแพ็คเกจ NuGet ภายใน บริษัท ด้วยการเข้าถึงซอร์สโค้ด


20

เรามีห้องสมุดมากมายที่เราต้องการแบ่งปันระหว่างโครงการต่างๆภายใน บริษัท ข้อกำหนดเหล่านี้คือ:

  • แหล่งไลบรารีถูกเก็บไว้ในที่เก็บซึ่งแยกจากโครงการปลายทาง
  • โครงการสุดท้ายรวมถึงห้องสมุดผ่าน NuGet
  • ต้องเป็นไปได้ที่จะตรวจสอบซอร์สโค้ดสำหรับ libary ที่กำหนดได้อย่างง่ายดายในขณะที่ทำงานในโปรเจ็กต์ปลายทาง

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

ดังนั้นคำถามคือ:

  • มีวิธีใดที่จะให้การเข้าถึงซอร์สโค้ดของไลบรารีภายในโดยไม่จำเป็นต้องมีโค้ดใน repo / solution เดียวกัน
  • มีวิธีในการตั้งค่าเซิร์ฟเวอร์ Symbol / คำสั่งผสม NuGet เพื่อให้ VS ใช้สัญลักษณ์สำหรับการนำทางไม่ใช่แค่สำหรับการดีบัก?

ใช้ ReSharper / อื่น ๆ เพิ่มเติมเป็นตัวเลือก


2
เราพบว่าการใช้ Nuget สำหรับการจัดการโครงการภายในที่เหมาะสมที่สุด ในที่สุดเราก็คัดลอกมาเพื่อสนับสนุนโครงการและการอ้างอิง DLL ฉันชอบที่จะได้ยินจากคนที่สามารถทำงานนี้ได้
Robert Harvey

คุณได้ตั้งเซิร์ฟเวอร์สัญลักษณ์สำหรับไฟล์ pdb ที่สอดคล้องกับ dll ที่อยู่ในแพ็คเกจ NuGet ของคุณหรือไม่?
RubberDuck

3
เรามีการติดตั้งแบบเดียวกันกับที่ทำงานปัจจุบันของฉัน เซิร์ฟเวอร์ NuGet (ประกอบด้วย DLLs ที่ไม่มี PDB) และเซิร์ฟเวอร์สัญลักษณ์ (ประกอบด้วย DLLs, PDB และแหล่งที่มา) เรายังมีปัญหาเดียวกัน (แหล่งที่มาและ PDB ที่ดึงมาเฉพาะเมื่อการดีบัก) @RobertHarvey: NuGet Package Manager เป็นลูกค้า NuGet ที่ไม่ดี มันไม่ได้แยกความแตกต่างระหว่างการพึ่งพาโดยตรงและชั่วคราวและต้องการการกระทำที่ "รวม" เราเปลี่ยนเป็นPaketและไม่เคยมองย้อนกลับไปตั้งแต่นั้นมา มันทำให้การจัดการแพคเกจมีสติและสามารถแบกรับได้
Allon Guralnek

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

4
@Murph - ฉันไม่ใช่ OP แต่ในเอกสารประสบการณ์ของฉันจะไม่บันทึกรายละเอียดที่ฉันต้องการ ฉันจำเป็นต้องทำความสะอาดรัฐนี้หรือผู้ที่จะทำความสะอาด? การหลบหนีนี้คืออะไร? โอเวอร์โหลดเหล่านี้แตกต่างกันอย่างไร หน่วยงานเหล่านี้สนับสนุนความเท่าเทียมกันหรือไม่และหากเป็นเช่นนั้น ความซับซ้อนของการโทรนี้ประมาณเท่าไหร่? เพียงรายละเอียดมูลค่าเอกสารมีเป็น (สะอาด) แหล่งที่มาเพราะมีเสมอและมักจะเป็นสิ่งที่ไม่เคย Documenter พิจารณา แต่ที่มีความสำคัญกับคุณ ยิ่งไปกว่านั้นเอกสารที่ซับซ้อนมีข้อผิดพลาดอย่างหลีกเลี่ยงไม่ได้
Eamon Nerbonne

คำตอบ:


1

สิ่งที่ควรทำคือเพียงตรวจสอบซอร์สโค้ดสำหรับแพ็คเกจ NuGet และเปิดโซลูชันในอินสแตนซ์แยกต่างหากของ Visual Studio

Visual Studio มีกลอุบายของการสลับระหว่างโค้ดในอินสแตนซ์ที่เปิดอยู่โดยทำการคำนวณสิ่งที่คุณอ้างอิง ครั้งแรกที่สิ่งนี้เกิดขึ้นกับฉันในขณะที่ฉันกำลังดีบั๊กนั่นคือการเปิดเผย

ปัญหาหลักที่คุณพบคือการตรวจสอบให้แน่ใจว่าโค้ดเช็คเอาต์สำหรับแพ็คเกจที่ขึ้นต่อกันแสดงถึงเวอร์ชันเดียวกันกับการอ้างอิง NuGet ของคุณในโครงการหลัก ไม่ใช่ปัญหาหากคุณปฏิบัติตามนโยบายในการสร้างแพคเกจเวอร์ชันล่าสุดเสมอ

ข้อดีอีกประการของวิธีนี้คือถ้าแพ็กเกจต้องการเปลี่ยนคุณสามารถทำการเปลี่ยนแปลงได้แล้ว


2
คุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานนี้ได้หรือไม่? มันไม่ทำงานในแบบที่คุณอธิบายให้ฉัน คุณจำเป็นต้องรวม PDB ในแพ็คเกจหรือไม่? มีเคล็ดลับเพิ่มเติมหรือไม่
Dyppl

-1

บางทีคุณอาจจะสามารถใช้https://github.com/GitTools/GitLink มันเพิ่มลิงค์ในไฟล์ pdb ที่ชี้ไปยังที่เก็บดังนั้น Visual Studio จะดึงซอร์สโค้ดจากที่นั่น - จากนั้นคุณเพียงแค่ต้องรวมไฟล์ pdb ในแพ็คเกจ nuspec ของคุณและไม่ต้องการเซิร์ฟเวอร์ต้นทาง


1
มันทำงานนอกเหนือจากการแก้จุดบกพร่องหรือไม่ มันดูไม่เหมือนที่มันเป็น
Dyppl

-1

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

ฉันพบว่าการรวมกันของ Symbol Server ที่คุณพูดถึงและการเรียกดูการถอดแยกชิ้นส่วนนั้นเพียงพอที่จะคิดออกว่าเกิดอะไรขึ้น

หวังว่าจะช่วย

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

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