2015-09-09 7 views
11

के साथ एक NuGet संदर्भ को अस्थायी रूप से कैसे बदलें, मैं पैकेज प्रबंधन के लिए NuGet के साथ विजुअल स्टूडियो 2015 का उपयोग कर सी # प्रोजेक्ट पर काम कर रहा हूं। एक संदर्भ के लिए, मैं अस्थायी रूप से स्थानीय निर्माण का उपयोग करना चाहता हूं, जबकि मैं रिलीज़ संस्करण की बजाय एक फिक्स पर पुनरावृत्ति कर रहा हूं। इसे पूरा करने का सबसे अच्छा तरीका क्या है?स्थानीय निर्माण

यदि मैं एक एसवीएन बाहरी का उपयोग कर रहा था, तो मैं नई स्थानीय रूप से निर्मित प्रतियों को बाहरी संदर्भ के फ़ोल्डर में छोड़ दूंगा, और सेट हो जाऊंगा। अन्य पैकेज प्रबंधन सॉफ्टवेयर (कोकोपोड्स की तरह) मुझे संदर्भ को हल करने के लिए स्थानीय निर्देशिका को इंगित करने की अनुमति देगा। NuGet के साथ, ऐसा नहीं लगता है कि इसके लिए कोई तंत्र है।

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

+0

यह एक [XY-समस्या] की तरह लगता है (http://meta.stackexchange.com/questions/66377/what-is-the-xy -प्रोबलेम) - आप इसे क्यों हासिल करना चाहते हैं? –

+0

मैं अपने ऐप में अधूरा लाइब्रेरी कोड का परीक्षण करने की कोशिश कर रहा हूं जो इसका उपभोग करता है। चूंकि यह अधूरा है, मैं अभी तक अपने परिवर्तनों को प्रतिबद्ध और प्रकाशित करने के लिए तैयार नहीं हूं। – Dov

+0

आप जानते हैं कि सेमवीर के बाद और स्थानीय भंडार होने से आपकी समस्या आंशिक रूप से हल हो जाती है ... बीटा-पैकेज करने में समस्या क्या है? हालांकि, मैं अतिरिक्त ओवरहेड को समझता हूं (जिसे मैं भी सामना कर रहा हूं ...) –

उत्तर

4

आप अपनी खुद की Nuget फ़ीड (सरल स्थानीय फ़ोल्डर + कुछ विन्यास) बना सकते हैं

और पढ़ें यहाँ Hosting Your Own NuGet Feeds

+1

पुराने फ़ोल्डर से अनइंस्टॉल करने और फिर पुनर्स्थापित करने के अलावा स्थानीय फ़ोल्डर पैकेज स्रोत पर स्विच करने का कोई तरीका है? यह इतना सरल नहीं है, क्योंकि जिस समाधान में मैं काम कर रहा हूं वहां 20 परियोजनाएं हैं, जिनमें से केवल 5 लाइब्रेरी का उपयोग करती हैं। यह दुर्बल नहीं है, लेकिन कष्टप्रद है। – Dov

7

मैं मेरे लिए निम्नलिखित तरीके को उपयोगी पाया:

सबसे पहले मैं को निष्क्रिय "NuGet पैकेज समाधान के संदर्भ मेनू से "पुनर्स्थापित करें"।

उसके बाद मैं संकुल फ़ोल्डर में जाता हूं, और उस पैकेज की खोज करता हूं जिसे मैं प्रतिस्थापित करना चाहता हूं। इस पैकेज से मैं संस्करण संख्या लेता हूं, और डीएल बनाने के लिए इस सटीक संस्करण संख्या का उपयोग करता हूं जिसे मैं एक्सचेंज करना चाहता हूं।

इसके बाद मैं इस नए निर्माण डीएल के साथ संकुल फ़ोल्डर में डीएलएल का आदान-प्रदान कर सकता हूं। परियोजना का निर्माण अब इस नए डीएल का उपयोग करता है।

यह सेट अप करने के बाद, मैं आसानी से नए डीएलएस बना सकता हूं, और उन्हें संकुल फ़ोल्डर में कॉपी कर सकता हूं।

+2

अक्षम करें "NuGet Package Restore" आवश्यक नहीं है –

+0

यह एक अच्छा, कोई फर्क समाधान नहीं है। मेरे लिए काम किया! – Dan

+0

जब मैं कोशिश करता हूं तो मुझे एक त्रुटि मिलती है - "एक शर्त के रूप में चिह्नित करने के लिए असेंबली {असेंबली पथ} को मजबूत हस्ताक्षरित होना चाहिए।" –

4

हमें इस उपकरण का उपयोग करके बहुत सफलता मिली है। इसका उपयोग करना और काम करना आसान है।

वी.एस. 2015 https://marketplace.visualstudio.com/items?itemName=RicoSuter.NuGetReferenceSwitcherforVisualStudio2015

वी.एस. 2017 https://marketplace.visualstudio.com/items?itemName=RicoSuter.NuGetReferenceSwitcherforVisualStudio2017

संबंधित मुद्दे