2015-04-02 10 views
22

मैंने पहले से ही एक समाधान की खोज की है, विभिन्न दृष्टिकोणों की कोशिश की लेकिन कोई भी काम नहीं किया, इस प्रकार मैं यहां पूछ रहा हूं।NuGet और Git Submodules

मेरी वर्तमान आवश्यकता अलग गिट भंडारों में से प्रत्येक है जिसमें संबंधित परियोजनाओं के साथ एक .NET समाधान फ़ाइल है। उनमें से एक या अधिक भंडारों में केवल कक्षा पुस्तकालय होंगे और मुझे अन्य पुस्तकालयों के समाधानों के अंदर उन पुस्तकालयों का उपयोग करने की आवश्यकता है।

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

तो मेरा प्रयास सबमिशन को शामिल करना था, फिर मेरे वर्तमान समाधान में "मौजूदा प्रोजेक्ट जोड़ें" और वांछित कक्षा लाइब्रेरी (ies) लोड करें।

बड़ी समस्या जो मैं दूर करने में असमर्थ हूं, वह Nuget पैकेज पुनर्स्थापना है।

- MySolution.sln 
- Packages folder 
- MyAppProject folder 
- Submodule folder 
-- EXPECTED packages folder for MyLibraryProject that I cannot generate 
-- MyLibraryProject folder 

एक समाधान मैंने पाया और कोशिश की this था: आयातित परियोजनाओं में ".. \ संकुल *" लेकिन जब submodule वे एक अतिरिक्त सबफ़ोल्डर में स्थित हैं ताकि वे आवश्यक निर्भरता नहीं मिल सकता है के रूप में आयात लाइब्रेरियों को संदर्भित लेकिन यह दो प्रमुख समस्याएं हैं:

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

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

धन्यवाद।

+1

क्या आपने गिट submodules के बजाय MyLibraryProject के लिए NuGet का उपयोग करने पर विचार किया है? स्थानीय NuGet सर्वर चलाएं, लाइब्रेरी के लिए NuGet पैकेज जेनरेट करें, और उसके ऐप में उसमें एक संदर्भ जोड़ें। बस एक विकल्प ... –

+0

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

+0

ठीक है। और पुस्तकालय परियोजना के लिए आपके पास दो निर्देशिका स्तर हैं? (क्या सबमिशन निर्देशिका सिर्फ लाइब्रेरी प्रोजेक्ट निर्देशिका ही हो सकती है?) –

उत्तर

5

ऐसा लगता है कि आपकी समस्या यह है कि सबमिशन की परियोजनाएं उनके रेपो के समाधान की तुलना में एक अलग निर्देशिका स्तर में हैं। यह एक सामान्य Nuget मुद्दा है क्योंकि यह समाधान स्तर पर पुनर्स्थापित करता है। आप $ (SolutionDir) के साथ अपने संदर्भों को प्रतिस्थापित करने के लिए यहां फिक्स संकेत पथ स्क्रिप्ट का उपयोग कर सकते हैं और संभवतः समस्या को हल कर सकते हैं। https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/README.md#fixhintpathsps1

+0

मुझे लगता है कि एक स्वच्छ पावरहेल स्क्रिप्ट है जो संकेतों को हल करती है ताकि मैं इसे स्क्रिप्ट कर सकूं। मैं इस संभावित समाधान का मूल्यांकन करूंगा, धन्यवाद। –

+0

क्या यह आपके लिए काम कर रहा है? – mshish

+0

हालांकि यह वास्तव में व्यवहार्य है, हम अभी भी निर्णय लेने की प्रक्रिया में हैं, हालांकि ऐसा लगता है कि हम गिट सबमिड्यूल के बजाय आंतरिक निर्भरताओं के लिए Nuget का उपयोग करेंगे, जैसा कि @ जोन-स्कीट ने सुझाव दिया था। –

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