2011-04-20 16 views
5

ठीक है, इसलिए हमारे अंदर लगभग 8 अलग-अलग परियोजनाओं के साथ एक बड़ा समाधान है। इनमें से प्रत्येक परियोजना विभिन्न तृतीय पक्ष असेंबली पर निर्भर करती है। यह समाधान स्रोत नियंत्रण की ट्रंक शाखा में है। हमारे पास ट्रंक से करीब 5 अलग-अलग शाखाएं भी हैं।आपको तृतीय पक्ष असेंबली कहां स्टोर करनी चाहिए?

इन तृतीय पक्ष असेंबली को प्रबंधित करने का सबसे अच्छा तरीका क्या है? जब आप किसी असेंबली का संदर्भ जोड़ते हैं और फिर उसे क्लिक करते हैं और गुण विंडो देखते हैं तो मुझे लगता है कि यह असेंबली के लिए एक कठिन कोड है।

उदाहरण के लिए: हमारी सभी शाखाओं को "सी: \ कोड \" में मैप किया गया है। तो ट्रंक "सी: \ कोड \ ट्रंक" होगा और एक शाखा "सी: \ कोड \ somebranch" होगी।

यदि मैं "असेंबलीज़" नामक "सी: \ कोड \ ट्रंक" में एक फ़ोल्डर बनाता हूं और फिर उस फ़ोल्डर में हमारी सभी तृतीय पक्ष असेंबली छोड़ देता हूं, और फिर मैं उस असेंबली संदर्भ में संबंधित एक असेंबली का संदर्भ जोड़ता हूं ? अगर मैं अतिरिक्त असेंबली पर क्लिक करता हूं तो मुझे लगता है कि ग्रेड आउट पथ संपत्ति "सी: \ कोड \ ट्रंक \ असेंबली \ someassembly.dll" कहती है।

यदि मैं ट्रंक से बाहर निकलता हूं तो क्या होता है? क्या "somebranch" में अभी भी "सी: \ कोड \ ट्रंक \ Assemblies \ someassembly.dll" का संदर्भ होगा या फिर यह "सी: \ कोड \ somebranch \ Assemblies \ someassembly.dll" का संदर्भ देगा?

वर्तमान में हमारे पास वास्तव में "असेंबली" नामक स्रोत नियंत्रण में एक शाखा है जिसे मैप किया गया है, बस किसी भी अन्य शाखा की तरह, "सी: \ कोड \"। इसलिए असेंबली के संदर्भ में परियोजनाओं वाली सभी शाखाओं में "सी: \ कोड \ असेंबली \ someassembly.dll" के संदर्भ हैं, इससे कोई फर्क नहीं पड़ता कि परियोजना किस शाखा में है, पथ समान होगा।

दुर्भाग्यवश इसका मतलब है कि आपको सफलतापूर्वक निर्माण करने के लिए समाधान प्राप्त करने के लिए आप जिस शाखा में काम कर रहे हैं और विधानसभा शाखा का नवीनतम संस्करण प्राप्त करना है।

यह सब संक्षेप में ऊपर:

  • आप एक संदर्भ है कि समाधान के सापेक्ष है कैसे जोड़ सकता हूँ? (यानी सी: \ कोड \ ट्रंक \ Assemblies \ someassembly.dll का संदर्भ जोड़ें और उस पथ को उस परियोजना के सापेक्ष रखें जो इसे जोड़ता है, ताकि जब शाखा बनाते हैं तो यह ब्रांडेड असेंबली फ़ोल्डर का संदर्भ देता है न कि ट्रंक के असेंबली फ़ोल्डर। इस संदर्भ में पहले से ही रिश्तेदार है?

  • 3 पार्टी विधानसभाओं के प्रबंधन के लिए अन्य सिफारिश रणनीति क्या हैं?

उत्तर

2

हां ट्रंक के एक असेंबली फ़ोल्डर का उपयोग करें। मुझे लिब बेहतर नाम विधानसभा पसंद है।

हाँ पथ पहले से ही सापेक्ष है। जब आप अपनी परियोजनाओं को ब्रांच करते हैं तो सही असेंबली फ़ोल्डर मिलेंगे।

इस बात पर निर्भर करते हुए कि आप कितने तीसरे पक्ष के असेंबली का उपयोग कर रहे हैं, आप भी अपने असेंबली फ़ोल्डर को व्यवस्थित करना चाहते हैं, इसलिए यह डीएलएस की एक बड़ी गड़बड़ी नहीं है।

+0

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

0

मैं आमतौर पर एक आम परियोजना है कि अन्य सभी संदर्भ पैदा करते हैं। कि आम परियोजना के अंदर, मैं एक फ़ोल्डर बना deps (निर्भरताओं के लिए) कहा जाता है। अन्य सभी परियोजनाएं आम परियोजना के डीपीएस फ़ोल्डर में डीएलएल की प्रति का संदर्भ देती हैं।

5

अब हमारे पास nuget है, आप इसे सभी समर्थित ओएसएस पैकेजों के लिए उपयोग कर सकते हैं और अन्य तृतीय पक्ष असेंबली के लिए your own nuget packages भी बना सकते हैं। openwrap को नुजेट के विकल्प के रूप में उल्लेख करना उचित है।समाधान स्तर

पर

nuget भंडार संकुल इसलिए प्रत्येक शाखा (और ट्रंक) इनमें से एक संस्करण बनाए रखेगा।

मुझे सुझाव है कि यह बेहतर व्यवहार है। उदाहरण के लिए किसी तृतीय पक्ष को अपग्रेड करते समय आप अपने असेंबली संस्करण को अलग रखना चाहते हैं।

अतीत में मैंने आंतरिक रूप से विकसित निर्भरताओं से विशिष्ट संस्करण बनाने के लिए svn के बाहरी आदेश का उपयोग किया है। ऐसा कोई कारण नहीं है कि आप उन्हें एक संग्रह में चिपका सकें और सही संस्करण प्राप्त करने के लिए बाहरी (या आप एसएमएम के बराबर) का उपयोग कर सकें।

मैंने डीएलएस को सही जगह पर भी प्राप्त करने के लिए कार्यक्रमों का निर्माण किया है।

1

हमारे पास तीसरे पक्ष के संदर्भों के लिए हमारे समाधान में समाधान समाधान फ़ोल्डर है। समाधान की प्रत्येक शाखा में इसकी अपनी प्रति है।

जब हम कोई संदर्भ जोड़ते हैं तो हम संदर्भ संदर्भ संवाद में 'ब्राउज़ करें' टैब का उपयोग करते हैं और हमारे वर्तमान प्रोजेक्ट के सापेक्ष असेंबली का चयन करते हैं।

परियोजना फ़ाइल इस में शामिल हैं:

<Reference Include="SomeAssembly, Version=0.1.0.0, Culture=neutral, PublicKeyToken=8xxxxxxxxxxx, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Solution Items\SomeAssembly.dll</HintPath> 
</Reference> 
संबंधित मुद्दे