2010-08-23 13 views
7

मैं w7, 64bit और vs.net 2010 का उपयोग कर रहा हूं।विजुअल स्टूडियो 2010 "संदर्भ जोड़ें" बिन निर्देशिका में डीएलएल की प्रतिलिपि बना रहा है?

मैं अपने 'एड संदर्भ' संवाद बॉक्स में मौजूद किसी घटक का संदर्भ जोड़ रहा हूं। घटक एक तृतीय पक्ष डीएल है।

ऐतिहासिक रूप से, W7 32 बिट पर यह मेरे वेब.कॉन्फिग (असेंबली टैग के भीतर) में एक लाइन जोड़ देगा जो इस डीएलएल को संदर्भित करता है और यह डीएलएल को बिन निर्देशिका में कॉपी नहीं करेगा।

हालांकि, 64 बिट w7 पर डीएलएल को बिन निर्देशिका में कॉपी किया गया है और web.config बिल्कुल अपडेट नहीं किया गया है।

बिन निर्देशिका में डीएलएल की प्रतिलिपि क्यों बनाई जा रही है? धन्यवाद

समाधान: (अद्यतन) ये पोस्ट मुझे सुराग मैं जरूरत दे दी है।

वीएस.NET डीएल को बिन निर्देशिका में कॉपी करेगा यदि आपका सिस्टम जीएसी में डीएलएल नहीं ढूंढ सकता है। जीएसी में असेंबली (आपके वर्कस्टेशन पर पंजीकृत) और सी: \ विंडोज \ असेंबली निर्देशिका को देखकर पाया जा सकता है।

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

** यह मेरी web.config को विधानसभा संदर्भ जोड़ा (और यह भी अपने वेब साइट बिन निर्देशिका के लिए dll कॉपी नहीं किया है) ****

उत्तर

5

यह बिन निर्देशिका में प्रतियां प्राप्त करता है ताकि निष्पादन योग्य इसे पा सके। यह अन्यथा नहीं मिलेगा, जब तक कि जीएसी में डीएलएल स्थापित न हो जाए।

+2

डीएलएल जीएसी के भीतर है (क्योंकि यह 'संदर्भ संदर्भ' संवाद विंडो में दिखाई देता है) इसलिए मुझे उम्मीद है कि यह डीएल – David

+2

+1 की प्रतिलिपि नहीं करेगा, यह उत्तर सही है। संदर्भ जोड़ें संवाद में जीएसी के साथ * कुछ नहीं * है। यह केवल पंजीकृत संदर्भ असेंबली सूचीबद्ध करता है, यह कभी भी GAC निर्देशिकाओं से कुछ भी सूचीबद्ध नहीं करता है। –

11

संदर्भ पर, एक Copy Local है संपत्ति (गुण विंडो में), जो यह निर्धारित करती है कि असेंबली को आउटपुट निर्देशिका में कॉपी किया जाना चाहिए या नहीं।

क्यों कि अन्य संदर्भ के लिए मायने रखता है नहीं कर सकते हैं, MSDN कहते हैं:

आप लागू करते हैं/कि कि GAC में पंजीकृत है एक कस्टम घटक का संदर्भ होता है एक आवेदन पत्र की प्रतिलिपि, घटक होगा पर ध्यान दिए बिना एप्लिकेशन के साथ तैनात/प्रतिलिपि नहीं बनाई जाएगी स्थानीय सेटिंग कॉपी करें।

+0

बनाम 2010 के भीतर, यह एक वेबसाइट है (और एक वेब अनुप्रयोग नहीं) और इसलिए समाधान के भीतर एक संदर्भ फ़ोल्डर नहीं है। मेरे पास बस एक बिन निर्देशिका है और यदि मैं डीएलएल के गुणों को देखता हूं तो मेरे पास "स्वतः रीफ्रेश पथ", "फ़ाइल नाम" और "पूर्ण पथ" गुण हैं। मेरे पास संपत्ति "कॉपी स्थानीय" नहीं है। – David

+0

@ डेविड यदि आप web.config पर '' प्रविष्टि जोड़ते हैं और DLL को हटाते हैं, तो क्या आपकी साइट ठीक से काम करती है? – bdukes

1

पिछले प्रतिक्रियाओं के साथ: मुझे लगता है कि विजुअल स्टूडियो निर्धारित करता है कि Copy Local संपत्ति इस तथ्य के आधार पर सत्य पर सेट है कि DLL आपके कंप्यूटर GAC में नहीं है।
यह देशी एसनेट डीएलएल की प्रतिलिपि बनाने के लिए वीएस को रोकता है, इसलिए इसे डिफ़ॉल्ट रूप से केवल "कस्टम" डीएलएल कॉपी करना चाहिए।

+0

यह एक एएसपीनेट "वेब साइट" एक "वेब अनुप्रयोग" नहीं है और मैं प्रतिलिपि स्थानीय संपत्ति को बदलने में असमर्थ हूं। इसके अलावा, घटक gac के भीतर है, इसलिए इसे web.config में इसके संदर्भ में जोड़ना चाहिए। निश्चित नहीं है, क्यों यह इससे संबंधित होगा w7 64 बिट वर्कस्टेशन? – David

+0

क्या आप वाकई "वेब साइट" हैं? मैं बस पढ़ रहा हूं कि एक वेब साइट में बिन फ़ोल्डर नहीं है ... (http://bit.ly/aOlnfD)। यह अजीब बात है क्योंकि मैं उस प्रतिलिपि स्थानीय मान को बदलने में सक्षम हूं। और यह अजीब लगता है कि व्यवहार 32 बिट और 64 बिट से अलग है। ऐसा इसलिए हो सकता है क्योंकि डीएलएल 64 बिट में संकलित नहीं है और संकलक डीएलएल पर कुछ करता है (क्या यह वास्तव में जीएसी में से एक जैसा है?)। लेकिन यह अजीब लगता है। –

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