2013-07-22 14 views
5

मैं परियोजना संरचना निम्नलिखित है वीएसएसNuGet नहीं लापता संकुल

में अब विजुअल स्टूडियो 2010 प्रो में हो रही

enter image description here

: मैं Solution2 खोलें और फिर Library1 बाहरी परियोजना रूप में जोड़ें।

लाइब्रेरी 1 दो बाहरी पुस्तकालयों का संदर्भ दे रहा है जो मुझे NuGet के माध्यम से मिलता है। जब मैं अपना समाधान 2 बनाता हूं तो यह सब ठीक काम करता है। तो मैंने अपनी सभी परियोजनाओं में चेक-इन किया।

मुद्दा: एक और डेवलपर SourceSafe से Solution2 हो जाता है और बनाता है, यह कहना है Library1 उन बाहरी पुस्तकालयों DLLs याद आ रही है।

की कोशिश की है:

1: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

तो अब मैं Solution2 तहत फ़ोल्डर .nuget जो चेक-इन किया जाता है। लेकिन वह अभी भी डीएलएस नहीं ला रहा है।

मेरा संदेह है कि लाइब्रेरी 1 एक अलग समाधान में है इस मुद्दे का कारण बन रहा है।

कोई भी विचार NuGet के माध्यम से स्वचालित रूप से अनुपलब्ध पैकेज कैसे प्राप्त करें?

अद्यतन:
जेवियर्स सुझाव मदद की है और यहाँ अपने ब्लॉग पोस्ट में से दो हैं:

उत्तर

5
अपने मौजूदा सेटअप के साथ

, आप सुनिश्चित करें कि आपके चाहिए पर 0Gसमाधान औरपर सक्षम NuGet पैकेज पुनर्स्थापितसमाधान 2 nuget.targets को Solution1\Packages आउटपुट डायरेक्टरी पर nuget इंस्टॉल कमांड को इंगित करना चाहिए। आपका फ़ोल्डर संरचना इस तरह दिखेगा:

Folder structure

कारण: Library1.csproj संदर्भ solution1 \ संकुल स्थान की ओर इशारा करते रहे हैं। इस प्रोजेक्ट को Solution2 में जोड़ते समय, परियोजना संदर्भ परिवर्तित नहीं होते हैं, लेकिन समाधान Solution1 \ Packages के बजाय Solution2 \ Packages में संकुल को पुनर्स्थापित करेगा।

यदि आपने पहले ही समाधान 2 की परियोजनाओं में संकुल स्थापित किए हैं, तो आपको यह सुनिश्चित करना होगा कि वे अभी भी समाधान 2 \ पैकेज के विरुद्ध पुनर्स्थापित करें। ऐसा करने के लिए, मैं आपको साझा करने की अनुशंसा करता हूं कि साझा परियोजना फ़ाइलों (nuget.targets फ़ाइल के लिए आयात विवरण के ऊपर) के भीतर एक MSBuild संपत्ति सेट करें और इस MSBuild संपत्ति मान को RestoreCommand में पास करें।

उदा।:

<PackagesOutDir> $ (SolutionDir) .. \ पुस्तकालय \ संकुल </PackagesOutDir >

और nuget.targets फ़ाइल को समायोजित, जैसे:

< PackagesOutDir स्थिति = "$ (PackagesOutDir) == ''" > $ (SolutionDir) \ Packages </PackagesOutDir >

...

<RestoreCommand> ... -ओ "$ (PackagesOutDir)" </RestoreCommand >


वैकल्पिक रूप से, आप एक ही पैकेज फ़ोल्डर उपयोग करना चाहते हैं , आप दोनों.nuget\NuGet.targets फ़ाइलों को संशोधित कर सकते हैं और -o (या -ऑटपुट डायरेक्टरी) nuget install कमांड के लिए स्विच सेट कर सकते हैं।

RestoreCommand तत्व को यह जोड़ना:

enter image description here

नोट आप होगा: -O "$ (SolutionDir .. \ संकुल" सभी संकुल एक ही स्थान में बहाल सुनिश्चित होगा मैन्युअल रूप से स्थापित पैकेज के संदर्भ हर बार जब आप ऐसा करने के बाद एक NuGet पैकेज स्थापित अद्यतन करने के लिए

+0

जेवियर, मैंने दोनों समाधानों पर पुनर्स्थापित किया है और आपके पास प्रत्येक समाधान के तहत .nuget और संकुल फ़ोल्डर के साथ सटीक उसी संरचना का उल्लेख किया है। हालांकि मैंने केवल संकुल फ़ोल्डर में repositories.config फ़ाइल शामिल की है। मेरी स्थानीय मशीन पर यह ठीक काम करता है लेकिन जब कोई अन्य डेवलपर VSS से समाधान 2 पकड़ता है, तो केवल लाइब्रेरी 1 प्रोजेक्ट लाया जाता है और संकुल फ़ोल्डर नहीं। मैं लक्ष्य के साथ थोड़ा सा खेलूँगा। धन्यवाद। – gbs

+0

कड़ाई से बोलते हुए, पैकेज फ़ोल्डर को प्रतिबद्ध नहीं किया जाना चाहिए (हालांकि मैं VCS में repositories.config फ़ाइल भी पसंद करता हूं)। Nuget.exe का कौन सा संस्करण .nuget फ़ोल्डरों में उपयोग किया जा रहा है? आप इसे "nuget.exe update -self" का उपयोग कर नवीनतम में अपडेट कर सकते हैं। इसके अलावा, क्या आप टीएफएस का उपयोग कर रहे हैं? यदि हां, तो वर्कस्पेस मैपिंग सही हैं? –

+0

NuGet Ver 2.6.4। मैं विजुअलसोर्ससेफ का उपयोग कर रहा हूं। एक बात मैंने देखा जब मैं समाधान 2 खोलता हूं, लाइब्रेरी 1 के लिए आवश्यक संकुल समाधान 2/संकुल फ़ोल्डर में स्थापित हैं लेकिन लाइब्रेरी 1 उन्हें लोड करने में सक्षम नहीं है। – gbs

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