स्रोत कोड पहुंच के साथ नूगेट पैकेज का प्रबंधन


20

हमारे पास बहुत सारे इन-हाउस पुस्तकालय हैं जिन्हें हम कंपनी के अंदर परियोजनाओं के बीच साझा करना चाहते हैं। ये कुछ आवश्यकताएँ हैं:

  • पुस्तकालय स्रोतों को अंत-परियोजनाओं से अलग किए गए रिपॉजिटरी में संग्रहीत किया जाता है
  • अंत परियोजनाओं में NuGet के माध्यम से पुस्तकालय शामिल हैं
  • एंड-प्रोजेक्ट पर काम करते समय किसी भी दिए गए परिवाद के लिए आसानी से स्रोत कोड का निरीक्षण करना संभव होगा

हमारे निजी NuGet रिपॉजिटरी को स्थापित करना कोई समस्या नहीं है, लेकिन स्रोतों का प्रबंधन करना है। हमने स्रोत सर्वर के माध्यम से स्रोतों को उजागर करने की कोशिश की और यह थोड़े काम करता है, लेकिन काफी नहीं: वीएस बाहरी कोड डीबग करते समय स्रोतों को डाउनलोड करता है, लेकिन जब आप परिभाषा / कार्यान्वयन के लिए नेविगेट करने का प्रयास नहीं करते हैं। मूल रूप से, आप केवल डिबगिंग करते समय स्रोत कोड पर जा सकते हैं, जो कि हम की आवश्यकता नहीं है।

तो, प्रश्न हैं:

  • एक ही रेपो / समाधान में कोड होने की आवश्यकता के बिना आंतरिक पुस्तकालयों के स्रोत कोड तक पहुंच प्रदान करने के लिए क्या तरीके मौजूद हैं
  • वहाँ प्रतीक सर्वर / NuGet फ़ीड कॉम्बो सेट करने के लिए एक तरीका है ताकि वी.एस. नेविगेशन के लिए प्रतीकों का उपयोग करता है, न कि केवल डीबगिंग के लिए?

ReSharper / अन्य ऐड-इन्स का उपयोग करना एक विकल्प है।


2
हमने आंतरिक परियोजनाओं के उप-इष्टतम प्रबंधन के लिए नुगेट का उपयोग किया; हमने अंततः इसे परियोजना और DLL संदर्भों के पक्ष में निकाल दिया। मैं किसी ऐसे व्यक्ति से सुनना पसंद करूंगा जो यह काम करने में सक्षम था।
रॉबर्ट हार्वे

क्या आपने pdb फ़ाइलों के लिए एक प्रतीक सर्वर स्थापित किया है जो आपके NuGet पैकेज में निहित dll के अनुरूप है?
रबरडैक

3
हमारे वर्तमान कार्यस्थल पर हमारे पास ठीक वही सेटअप है। NuGet सर्वर (जिसमें PDL के बिना DLL होते हैं) प्लस प्रतीक सर्वर (DLL, PDB और स्रोत होते हैं)। हमारे पास भी यही मुद्दा है (स्रोत और PDB केवल डिबगिंग के समय पुनर्प्राप्त किए जाते हैं)। @RobertHarvey: NuGet पैकेज मैनेजर एक गरीब NuGet क्लाइंट है। यह प्रत्यक्ष और क्षणिक निर्भरता के बीच अंतर नहीं करता है और इसके लिए मूर्खतापूर्ण "समेकित" कार्यों की आवश्यकता होती है। हमने पाकेट में स्विच किया और फिर कभी पीछे मुड़कर नहीं देखा। इसने पैकेज प्रबंधन को समझदार और सुखद बना दिया।
एलोन गुरिलनेक

2
मुझे पूछना है - हालांकि मुझे नहीं लगता कि यह एक अनुचित आवश्यकता है - आपको साझा या सामान्य पैकेज में देखने में सक्षम होने की आवश्यकता क्यों है? विशेष रूप से कम से कम इनका दस्तावेजीकरण काले बक्सों के साथ किया जाना चाहिए और अंदर देखने की आवश्यकता को आदर्श के बजाय अपवाद होना चाहिए। किसी भी मामले में वे आपके स्रोत रेपो में उपलब्ध हैं और इसलिए निरीक्षण करने के लिए समाधान को डाउनलोड करने के लिए इसे पर्याप्त रूप से तुच्छ होना चाहिए। मैं किसी भी कारण से देख सकता हूं कि यह या इसके कुछ भाग पूरी तरह से नहीं हो सकते हैं, लेकिन फिर भी यह पूछने लायक है।
मर्फ़

4
@ मर्फ़ - मैं ओपी नहीं हूं, लेकिन मेरे अनुभव के दस्तावेज़ीकरण में मुझे वह विवरण नहीं मिला है जो मैं चाहता हूं। क्या मुझे इस राज्य को साफ करने की जरूरत है या कैली को? क्या वास्तव में यह बच रहा है? ये ओवरलोड अलग कैसे होते हैं? क्या ये संस्थाएँ समानता का समर्थन करती हैं, और यदि हां, तो किस आधार पर? इस कॉल की अनुमानित जटिलता क्या है? (स्वच्छ) स्रोत होने के लायक एकमात्र विस्तृत दस्तावेज है, क्योंकि वहाँ हमेशा और आमतौर पर चीजें हैं जिन पर दस्तावेज कभी नहीं माना जाता है, लेकिन यह आपके लिए महत्वपूर्ण है। इससे भी बदतर, जटिल दस्तावेज में अनिवार्य रूप से त्रुटियां होती हैं और यह बासी हो जाता है।
Eamon Nerbonne

जवाबों:


1

क्या काम करना चाहिए बस NuGet पैकेज के लिए स्रोत कोड की जाँच कर रहा है और विज़ुअल स्टूडियो के एक अलग उदाहरण में समाधान खोल रहा है।

विज़ुअल स्टूडियो में खुले स्थानों में कोड के बीच स्विच करने की एक साफ चाल है, जिसे आपने संदर्भित किया है। पहली बार मेरे साथ ऐसा हुआ जब मैं डिबगिंग कर रहा था, एक रहस्योद्घाटन था।

आपके द्वारा सामना की जाने वाली मुख्य समस्या यह सुनिश्चित कर रही है कि आश्रित पैकेज के लिए चेक आउट कोड मुख्य प्रोजेक्ट में आपके NuGet संदर्भ के समान संस्करण का प्रतिनिधित्व करता है। यदि आप अपने पैकेज के सबसे हाल के संस्करण के खिलाफ हमेशा निर्माण की नीति का पालन करते हैं तो कोई समस्या नहीं है।

इस दृष्टिकोण का एक और लाभ यह है कि यदि पैकेज को बदलने की आवश्यकता है, तो आप वहां और फिर परिवर्तन कर सकते हैं।


2
क्या आप इस बारे में कुछ अतिरिक्त जानकारी प्रदान कर सकते हैं कि यह कैसे काम करता है? यह मेरे लिए आपके द्वारा बताए गए तरीके से काम नहीं करता है। क्या आपको पैकेज में पीडीबी शामिल करने की आवश्यकता है? कोई अतिरिक्त चाल?
दप्पल

-1

शायद आप https://github.com/GitTools/GitLink का उपयोग कर सकते हैं । यह pdb फ़ाइल में रिपॉजिटरी की ओर इशारा करते हुए एक लिंक जोड़ता है, इसलिए Visual Studio वहां से स्रोत कोड लाएगा - और फिर आपको pdb फ़ाइल को अपने nuspec पैकेज में शामिल करने की आवश्यकता है और इसके लिए स्रोत सर्वर की आवश्यकता नहीं होगी।


1
हालांकि यह डिबगिंग के बाहर काम करता है? जैसा दिखता है वैसा होता नहीं है।
डायप्प्ल

-1

तो यह एक सही समाधान नहीं है, लेकिन आप उल्लेख करते हैं कि आप वैकल्पिक रूप से Resharper का उपयोग कर सकते हैं; dotPeek और resharper के साथ आप मूल कोड के डिस्सैसफ़ॉर्म पर नेविगेट कर सकते हैं, यह वही है जो मैं काम में उपयोग करता हूं, जहां हमारे पास आपका समान सेटअप है।

मुझे आपके द्वारा बताए गए प्रतीक सर्वर का एक संयोजन मिल गया है और डिससैस ब्राउज़ करना सामान्य रूप से यह पता लगाने के लिए पर्याप्त है कि क्या हो रहा है।

उम्मीद है की वो मदद करदे।

संपादित करें: अपने प्रश्न को फिर से पढ़ने के बाद मुझे एहसास हुआ कि आप विशेष रूप से स्रोत कोड ब्राउज़ करने में सक्षम होने के लिए कहते हैं, जो यह नहीं है। फिर भी उम्मीद है कि यह किसी के लिए उपयोगी होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.