2015-09-22 3 views
9

हम काम पर एक डब्ल्यूपीएफ आवेदन विकसित कर रहे हैं जिसमें विभिन्न "आम" निर्भरताएं (एकता, प्रिज्म, आदि) हैं।NuGet में पैकेज निर्भरताओं से निपटने का कोई शानदार तरीका है?

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

आज उदाहरण के लिए, मुझे प्रिज्म को 5.0 से 6.0 तक अपग्रेड करने का काम सौंपा गया था (जिसने वैसे भी परिवर्तन तोड़ दिया है) और इसका मतलब है कि, सभी नामस्थान संघर्षों को ठीक करने के अलावा, मुझे हर परियोजना के माध्यम से जाना होगा, हटाएं पुराने संदर्भ, नई निर्भरता जोड़ें और कुल्ला और दोहराना।

मेरा सवाल है, क्या इस समस्या से निपटने का एक शानदार तरीका है या यह मानक दृष्टिकोण है?

अग्रिम में बहुत धन्यवाद,

अद्यतन:

मैं ज्यादातर "प्रमुख" उन्नयन जो पैकेज प्रबंधक पर दिखाई नहीं देती हैं साथ चिंतित हूं। संस्करण 5.0 -> 6.0 अपग्रेड को एक बड़े अपग्रेड के रूप में माना जाएगा और इसलिए, NuGet पैकेज मैनेजर में स्वचालित अपडेट नहीं होगा।

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

+0

मुझे लगता है कि आपने अभी भी वीएस2015 के साथ काम नहीं किया है ... विजुअल स्टूडियो का कौन सा संस्करण आप काम कर रहे हैं? –

+0

@ DeblatonJean-Philippe 2013. मुझे 2015 तक अपग्रेड करना अच्छा लगेगा लेकिन दुर्भाग्यवश इस समय संभव नहीं है (कॉर्पोरेट लाइसेंसिंग इत्यादि) – kha

+0

@kha (आपके अपडेट के बाद) मुझे यकीन नहीं है कि मैं समझता हूं। मैंने NuGet पैकेज मैनेजर के माध्यम से v5.0.0 से v6.1.3 तक एंटीटी फ्रेमवर्क का एक बड़ा अपडेट किया है, और हाँ वहां परिवर्तन तोड़ रहे थे, इसलिए मुझे उन्हें भी ठीक करना पड़ा। App.config/web.config फ़ाइलों में संदर्भ स्वचालित रूप से अपडेट किए गए थे, मुझे बस इतना करना था कि उपयोग कथन में कुछ नामस्थान समस्याएं बदल दी गईं। – djm61

उत्तर

3

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

अस्वीकरण: मैंने कभी भी WPF प्रोजेक्ट/समाधान पर काम नहीं किया है, लेकिन वेब/फॉर्म ऐप्स के लिए, NuGet संकुल इस तरह से संभाले जाते हैं।

+0

धन्यवाद @ djm61। कृपया मेरी मूल पोस्ट में मेरा अपडेट देखें। – kha

0

मैं आपके दर्द को समझ सकता हूं क्योंकि मुझे आपके जैसी ही समस्या थी, लेकिन कोई आसान तरीका नहीं है। लेकिन निश्चित रूप से आपको प्रक्रिया को अपने दैनिक विकास और आपकी निर्भरता अद्यतन रोल-आउट के अलग-अलग प्रक्रिया को तोड़ने की आवश्यकता है।

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

प्रत्येक समाधान आप काम आप संपत्ति समूह है कि आम लक्ष्य भंडार को इंगित संशोधित करने की आवश्यकता पर लिए

(i रिश्तेदार पथ उपयोग कर रहा हूँ) एक बार सब बातों सेटअप, आप वास्तव में एक साथ एक अद्यतन प्रदर्शन कर सकते हैं लिपि (मैं उपयोग कर रहा हूँ अजगर रन-टाइम लिपि)

आप वास्तव में विस्तार के लिए setting up common nuget-packages-folder for reference updates देख सकते हैं, लेकिन यह क्या आप स्वचालित प्रक्रिया

0

के लिए पर देख मैं एक ऐसी ही समस्या है जब उन्नत करने के लिए कोशिश कर रहा था की तरह लगता है Xamarin स्टूडियो में अल्फा चैनल मुद्दों के साथ कई पैकेज, जो भी अच्छा नहीं है वीएस 2015 NuGet प्रबंधक के संबंध। मैंने very simple PowerShell script लिखना समाप्त कर दिया है जिसे मैं दिन में कई बार चलाता हूं।

# 
# This script updates local ibGib NuGet packages for mobileGib Android app solution. 
# For convenience in copy+paste in manager console: 
# ../UpdateLocalNugetPackages.ps1 

Update-Package commonGib 
Update-Package ibGib 
Update-Package languageGib.Biz 
Etc. 

मेरा मानना ​​है कि आप अपनी आवश्यकताओं के अनुरूप अपने NuGet आदेशों को तैयार कर सकते हैं।

इसके अलावा, अगर आपको इसके बारे में पता नहीं है, तो आपको निश्चित रूप से NuGet command line reference पढ़ना चाहिए। मुझे गलत हो सकता है, लेकिन ऐसा लगता है कि आपके परिदृश्य अद्यतन कमांड के साथ करने योग्य है।

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