विज़ुअल स्टूडियो: सापेक्ष विधानसभा संदर्भ पथ


96

समाधान निर्देशिका के भीतर स्थित एक असेंबली का संदर्भ जोड़ते समय, क्या इसे अपेक्षाकृत रूप से जोड़ने का कोई तरीका है, ताकि जब एक भंडार में चेक इन और आउट किया जाए तो यह सही ढंग से संदर्भित हो?


13
यदि यह UI से काफी काम नहीं करता है, तो याद रखें कि आप सीधे .proj फ़ाइल को सीधे संपादित कर सकते हैं और रिश्तेदार के लिए पथ बदल सकते हैं। एक बार जब आप इसे किसी भी तरह से बदल देते हैं, तो यह आपके द्वारा डाले गए तरीके से रहता है।
पावेल मिनावे

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

जवाबों:


124

पावेल मिनेव की मूल टिप्पणी पर विस्तार करने के लिए - विजुअल स्टूडियो के लिए जीयूआई इस धारणा के साथ सापेक्ष संदर्भों का समर्थन करता है कि एसएलएन रिश्तेदार संदर्भ की जड़ है। इसलिए यदि आपके पास कोई समाधान है C:\myProj\myProj.sln, तो आपके द्वारा सबफ़ोल्डर्स में C:\myProj\जोड़े गए किसी भी संदर्भ को स्वचालित रूप से रिश्तेदार संदर्भ के रूप में जोड़ा जाता है।

एक अलग निर्देशिका में एक रिश्तेदार संदर्भ जोड़ने के लिए, जैसे कि C:/myReferences/myDLL.dll, निम्नलिखित करें:

  1. समाधान एक्सप्लोरर में प्रोजेक्ट को राइट-क्लिक करके और संदर्भ जोड़ें का चयन करके Visual Studio GUI में संदर्भ जोड़ें ...
  2. * .Csproj खोजें जहां यह संदर्भ मौजूद है और इसे पाठ संपादक में खोलें
  3. इसके बराबर होने के लिए <HintPath> संपादित करें

    <HintPath>..\..\myReferences\myDLL.dll</HintPath>

यह अब संदर्भ है C:\myReferences\myDLL.dll

उम्मीद है की यह मदद करेगा।


20
मैं समझता हूं कि यह सहायक और सही है, लेकिन क्या वीएस गुई गंभीरता से एक रिश्तेदार संदर्भ जोड़ने का एक तरीका प्रदान नहीं करते हैं?
kdbanman

4
वीएस 2015 में मुझे यह व्यवहार डिफ़ॉल्ट रूप से मिला (सापेक्ष पथ)
मुगें

2
मुझे विश्वास हो गया कि इसने एक निरपेक्ष मार्ग जोड़ दिया है, जब तक कि मैंने आपके निर्देशों का पालन नहीं किया। VS ने संदर्भ गुणों में एक पूर्ण मार्ग दिखाया, लेकिन <HintPath> को पहले से ही सापेक्ष दिखाया गया। मुझे पता है कि मैं O_o lolimaderp फ़ाइलें याद कर रहा था!
donutguy640

@ donutguy640 कि मुझे भी उलझन हुई। उन्हें गुण फलक पर सापेक्ष पथ भी दिखाना चाहिए
अलेक्जेंडर डर्क

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

9

हां, बस अपने समाधान में एक निर्देशिका बनाएं जैसे कि lib /, और फिर फ़ाइल सिस्टम में उस निर्देशिका में अपना dll जोड़ें और इसे प्रोजेक्ट में जोड़ें (जोड़ें- मौजूदा आइटम-> आदि)। फिर अपने प्रोजेक्ट के आधार पर संदर्भ जोड़ें।

मैंने इसे कई बार svn के तहत और cv के तहत किया है।


5
आपको केवल प्रोजेक्ट में dll जोड़ने की आवश्यकता नहीं है, बस उसका संदर्भ जोड़ें। सबसे अच्छी बात यह है कि अपने स्रोत नियंत्रण में संपूर्ण 'लीब' डायरेक्टरी जोड़ें। एक उदाहरण के रूप में code.google.com/p/projectpilot/source/browse/#svn/trunk देखें
इगोर ब्रेजक

1
तुम सही हो। मैंने एक पुराने प्रोजेक्ट की जाँच की और न ही डायरेक्टरी या डीएलएस को प्रोजेक्ट में जोड़ा गया, सिर्फ रिपॉजिटरी में। और फिर संदर्भ परियोजना के सापेक्ष है। उसके लिए माफ़ करना।
फ्रेडी

3

वीएस 2017 में यह स्वचालित है। तो बस Add Referenceआम तौर पर।

ध्यान दें कि Reference Propertiesपूर्ण पथ में दिखाया गया है, लेकिन .vbproj/.csprojसापेक्ष में उपयोग किया जाता है।

<Reference Include="NETnetworkmanager">
      <HintPath>..\..\libs\NETnetworkmanager.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>

2

संभवतः, इसे प्राप्त करने का सबसे आसान तरीका केवल विधानसभा के संदर्भ को जोड़ना है और फिर संबंधित विज़ुअल स्टूडियो प्रोजेक्ट फ़ाइल (एक्सटेंशन .csproj) में संदर्भ के शाब्दिक प्रतिनिधित्व को ऐसे पैच करें कि यह सापेक्ष हो जाए।

मैंने वीएस 2005 में बिना किसी समस्या के कई बार ऐसा किया है।


3
मुझे लगता है कि प्रोजेक्ट फ़ाइल को मैन्युअल रूप से संशोधित करना आवश्यक नहीं है। मेरे अनुभव में विजुअल स्टूडियो हमेशा सापेक्ष पथों का उपयोग करता है। जब मुझे एक महत्वपूर्ण फ़ाइल (.snk) को साझा करना था तब हाथ से प्रोजेक्ट फ़ाइल को संशोधित करने का एकमात्र समय था। विजुअल स्टूडियो हमेशा प्रोजेक्ट डायरेक्टरी में सिर्फ की फाइल को कॉपी करता है, जिसके परिणामस्वरूप की फाइल की कई प्रतियाँ निकलती हैं।
स्टीफन एग्ली जूल

1

मैं यहां से बाहर हो सकता हूं, लेकिन ऐसा लगता है कि जवाब काफी स्पष्ट है: परियोजना के गुणों में संदर्भ पथ देखें। हमारे सेटअप में मैंने हमारे आम रिपॉजिटरी फ़ोल्डर को रेफरी पथ GUI विंडो में जोड़ा, जैसे

VS20xx में संदर्भ पथ

इस तरह मैं अपने dlls (प्रकाशन के लिए तैयार) को इस फ़ोल्डर में कॉपी कर सकता हूं और हर डेवलपर को इस फ़ोल्डर से बनने पर हर बार अपडेट किया गया DLL मिलता है।

यदि समाधान में dll पाया जाता है, तो बिल्डर को प्रकाशित टीम संस्करण पर स्थानीय संस्करण को प्राथमिकता देनी चाहिए।


दुर्भाग्य से यह csproj.user फ़ाइल में रखा गया है और सापेक्ष नहीं है।
जेमी किट्सन

0

जैसा कि पहले उल्लेख किया गया है, आप .csprojइसे मैन्युअल रूप से लागू करने के लिए अपनी परियोजना की फ़ाइल को मैन्युअल रूप से संपादित कर सकते हैं ।

मैंने यह भी देखा कि विज़ुअल स्टूडियो 2013 संदर्भ hintpath के लिए एक सापेक्ष पथ को लागू करने का प्रयास करता है, संभवत: प्रोजेक्ट फ़ाइल को अधिक पोर्टेबल बनाने के प्रयास के कारण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.