2009-12-19 19 views
5

मेरे पास जीएसी में एक इंटरऑप असेंबली है; विंडोज एक्सप्लोरर स्पष्ट रूप से इसे C:\WINDOWS\assembly फ़ोल्डर में सूचीबद्ध करता है। फिर भी, जब मैं विजुअल स्टूडियो से इसका संदर्भ जोड़ने का प्रयास करता हूं, तो मैं इसे संदर्भ संदर्भ संवाद में कहीं भी नहीं देख सकता।संदर्भ संदर्भ संवाद में गायब जीएसी असेंबली

यदि यह आपके साथ भी हुआ है, तो इसका कारण क्या है? और मैं इसे कैसे ठीक करूं?

(विधानसभा वास्तव मेंC:\WINDOWS\assembly\GAC_MSIL फ़ोल्डर में स्थित है, अगर आपको पता होना चाहिए है।)

उत्तर

0

"C: \ WINDOWS \ विधानसभा" एक विशेष फ़ोल्डर जो Windows Explorer में विधानसभाओं (और विधानसभा सूची जाएगा है जानकारी) विभिन्न उप-फ़ोल्डर्स के भीतर।

अपने मामले के लिए, आपको इसे VS.NET के भीतर "सी: \ विंडोज \ असेंबली \ GAC_MSIL ..... dll" भौतिक पथ पर इंगित करने की आवश्यकता हो सकती है।

+0

मुझे पता है कि। लेकिन आप उस सबफ़ोल्डर को 'ब्राउज़' कैसे करते हैं। विंडोज एक्सप्लोरर आपको नहीं देगा। आप जिसका अर्थ रहे हैं मैं कमांड लाइन संकलन में वापस आने का है? एक बेहतर तरीका होना चाहिए। –

+0

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

5

निम्न रजिस्ट्री कुंजियों में से एक जोड़ें, खोज करने के लिए निर्देशिका कहां है, और MyAssemblies आपकी असेंबली की श्रेणी है। नोट HKCU वर्तमान उपयोगकर्ता के लिए है और HKLM एक ही कंप्यूटर पर सभी के लिए है।

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>" 
+0

यह कैसे [HKEY_LOCAL_MACHINE \ से भिन्न क्यों है SOFTWARE \ Microsoft \।नेटफ्रेमवर्क \ असेंबली फ़ोल्डर] (अंतर \ Assembly फ़ोल्डर्सएक्स \ MyAssemblies ...) है? Http://support.microsoft.com/kb/306149 पढ़ना मुझे लगता है कि के बिना वह कुंजी सही होगी ... – RonnBlack

+0

जैसा कि इस पृष्ठ पर कहीं और @ साउंडारराजन द्वारा उल्लेख किया गया है, वीएस सफलतापूर्वक जीएसी असेंबली के साथ मिल जाएगा और निर्माण करेगा यदि आप उन्हें अपने '.csproj' फ़ाइल में मैन्युअल रूप से जोड़ते हैं। यहां वर्णित रजिस्ट्री कुंजी को बदलना केवल तभी जरूरी है जब आप वीएस 'संदर्भ जोड़ें' जीयूआई इंटरफ़ेस का उपयोग करने में सक्षम होना चाहते हैं। –

2

के रूप में अन्य के ने बताया है, बस GAC में एक विधानसभा स्थापित करने सुनिश्चित नहीं है कि यह जोड़े संदर्भ संवाद बॉक्स में दिखाई देंगे। मुझे this एमएसडीएन पृष्ठ मिला है जिसमें विवरण है। अनुभाग जोड़ें संदर्भ जोड़ें संवाद बॉक्स में एक असेंबली प्रदर्शित करने के लिए।

-1

उपयोग दृश्य स्टूडियो कमांड प्रॉम्प्ट के तहत इस आदेश

regsvr32/u shfusion.dll

3

मैं आप अपने लक्ष्य को प्राप्त करने में मदद मिलेगी एक टूल बनाया है। Muse VSReferences आपको GAC संदर्भ मेनू आइटम से परियोजना के लिए वैश्विक असेंबली कैश संदर्भ जोड़ने की अनुमति देगा।

+0

अफसोस की बात है, यह विजुअल स्टूडियो 2012 का समर्थन नहीं करता है। – Thought

+1

@ विचार: मैंने * अनौपचारिक रूप से * VS2012 और VS2013 का समर्थन करने के लिए एक्सटेंशन को संशोधित किया है। यह डाउनलोड [यहां] (http://ge.tt/2COX9iS/v/1?c) के लिए उपलब्ध है। –

0

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

Manual MZ-उपकरण द्वारा

0

वैकल्पिक रूप से, मैं परियोजना फ़ाइल संपादित और मैन्युअल रूप से संदर्भ गयी।

  1. जीएसी में असेंबली स्थापित करें। gacutil /i "Foo.dll"
  2. असेंबली का मजबूत नाम खोजें। gacutil /l आपको वह सूची देगा जिससे आप चुन सकते हैं।
  3. लेने वाली परियोजना फ़ाइल में (पिछले चरण से) निम्नलिखित पंक्ति जोड़
  4. <Reference Include="Foo, Version=x.x, Culture=neutral, PublicKeyToken=xxx, processorArchitecture=MSIL" />
  5. और यह काम करता है। :)
संबंधित मुद्दे