[visual-studio] Nuget के साथ सबसे अच्छा अभ्यास: डीबग या रिलीज?



0 Answers

मैं पूरी तरह से आपके निष्कर्ष से सहमत हूं। डीबग के साथ रिलीज और सिंबलसोर्स के साथ NuGet पैकेज। पैकेज में सीधे कदम उठाने के लिए यह बहुत दुर्लभ लगता है और अनुकूलन के साथ कभी-कभी डीबग गलत तरीके स्वीकार्य हो सकता है।

अगर वास्तव में कोई समस्या थी, तो मुझे लगता है कि आदर्श समाधान यह होगा कि NuGet इसका समर्थन करे। उदाहरण के लिए, कल्पना करें कि डिबगिंग करते समय, यह सिल्वरसोर्स पैकेज में शामिल एक के साथ रिलीज डीएलएल को प्रतिस्थापित कर सकता है।

आदर्श रूप में, तब क्या होगा कि कुछ रिलीज संस्करण के खिलाफ कुछ पैकेज- nuget pack SomePackage -Symbols एक रिलीज संस्करण बनाने के लिए, लेकिन एक डीबग प्रतीक पैकेज बना देगा। और वीएस प्लगइन को डीबगर में चलते समय डीबग असेंबली में एसोसिएशन देखने और खींचने के लिए पर्याप्त स्मार्ट होने के लिए अद्यतन किया जाएगा और इसके बजाय लोड करें। पागल की तरह, लेकिन दिलचस्प होगा।

हालांकि, मैं सिर्फ इस बारे में शिकायत करने वाले पर्याप्त लोगों को नहीं देखता हूं कि इस समय यह इसके लायक होगा।

NuGet टीम पुल अनुरोध स्वीकार करता है। :)

Question

वर्तमान में, मैं nuget.org पर आधिकारिक बिल्ड के लिए नुजेट के साथ रिहाई का निर्माण करता हूं, लेकिन मैं प्रतीक स्रोत के लिए Nuget के साथ डीबग बिल्ड को designsource.org पर धक्का देता हूं।

संपादित करें: (जॉन स्कीट, नोडा टाइम डेवलपमेंट से कुछ पूर्वाग्रहों के साथ)

NuGet अब दस्तावेज़ के रूप में NuGet गैलरी और symbolsource.org (या समान सर्वर) दोनों को धक्का देने का समर्थन करता है। दुर्भाग्यवश, यहां दो विरोधाभासी आवश्यकताएं हैं:

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

यह ठीक होगा, लेकिन NuGet (जहां तक ​​मैं कह सकता हूं) दोनों ही रिलीज और डिबग को एक ही पैकेज में उपयोगी तरीके से प्रकाशित करने की अनुमति देता है।

तो, विकल्प हैं:

  • डीबग को सभी को डिज़ाइन करें (जैसा कि दस्तावेज़ों में उदाहरण में दिखाया गया है) और किसी भी आकार और प्रदर्शन हिट के साथ रहते हैं।
  • रिहाई को हर किसी के लिए बनाता है और थोड़ा असुरक्षित डीबग अनुभव के साथ रहते हैं।
  • वास्तव में जटिल वितरण नीति के लिए जाएं, संभावित रूप से अलग रिलीज और डीबग पैकेज प्रदान करना।

पहले दो वास्तव में डीबग और रिलीज बिल्ड के बीच मतभेदों के प्रभाव के लिए उबालते हैं ... हालांकि यह ध्यान देने योग्य है कि पुस्तकालय के कोड में कदम उठाने के बीच एक बड़ा अंतर भी है क्योंकि आप कुछ व्यवहार की जांच करना चाहते हैं, और चाहते हैं लाइब्रेरी के कोड को डीबग करने के लिए क्योंकि आपको लगता है कि आपको एक बग मिला है। दूसरे मामले में, पुस्तकालय का कोड विजुअल स्टूडियो समाधान के रूप में प्राप्त करना संभव है और इस तरह से डीबग करना बेहतर है, इसलिए मैं उस स्थिति पर बहुत अधिक ध्यान नहीं दे रहा हूं।

मेरा प्रलोभन रिलीज बिल्ड के साथ ही रहना है, उम्मीद है कि अपेक्षाकृत कम लोगों को डीबग करने की आवश्यकता होगी, और जो लोग रिलीज बिल्ड में ऑप्टिमाइज़ेशन द्वारा ज्यादा प्रभावित नहीं होंगे। (जेआईटी कंपाइलर वैसे भी अनुकूलन का सबसे अधिक करता है।)

तो, क्या ऐसे अन्य विकल्प हैं जिन्हें हमने नहीं माना था? क्या अन्य विचार हैं जो संतुलन को इंगित करते हैं? NuGet संकुल को सिंबलसोर्स को पर्याप्त रूप से नया धक्का दे रहा है कि "सर्वोत्तम अभ्यास" वास्तव में स्थापित नहीं किया गया है?




Related