जवाबों:
ठीक है, इसलिए मूल रूप से यह संघर्ष के बारे में चिंता किए बिना DLL को वैश्विक रूप से सुलभ रखने का एक तरीका है। कोई और डीएलएल नर्क। प्रत्येक वास्तुकला और संस्करण को रहने के लिए अपना स्थान प्राप्त होता है।
यह एक्सप्लोरर में इसे ब्राउज़ करने का अपना तरीका भी है, इसलिए यदि आप जाते हैं
C: \ Windows \ विधानसभा
विंडोज़ एक्सप्लोरर में यह सभी DLL को सूचीबद्ध करता है।
लेकिन अगर आप आग लगाते हैं cmd
, तो आप देख सकते हैं कि यह वास्तव में कैसे संरचित है:
C: \ Users \ tritter> cd C: \ Windows \ असेंबली C: \ Windows \ विधानसभा> dir C: \ Windows \ विधानसभा की निर्देशिका 07/20/2009 02:18 PM <DIR> जीएसी 06/17/2009 04:22 PM <DIR> GAC_32 06/17/2009 04:22 PM <DIR> GAC_64 06/17-2009 04:22 अपराह्न <DIR> GAC_MSIL ... स्निप ... 0 फ़ाइल (ओं) को 0 बाइट्स 9 डिर (एस) 90,538,311,680 बाइट्स मुफ्त C: \ Windows \ विधानसभा> सीडी GAC_64 C: \ Windows \ विधानसभा \ GAC_64> dir C: \ Windows \ विधानसभा \ GAC_64 की निर्देशिका 06/17-2009 04:22 अपराह्न <DIR>। 06/17-2009 04:22 अपराह्न <DIR> ।। 01/19/2008 09:54 AM <DIR> blbproxy ... स्निप ... 01/19/2008 09:54 AM <DIR> srmlib 01/19/2008 06:11 AM <DIR> System.Data 01/19/2008 06:11 AM <DIR> System.Data.OracleClient ... स्निप ... 0 फ़ाइल (ओं) को 0 बाइट्स 34 डिर (एस) 90,538,311,680 बाइट्स मुफ्त C: \ Windows \ Assembly \ GAC_64> cd System.Data C: \ Windows \ विधानसभा \ GAC_64 \ System.Data> dir C: \ Windows \ विधानसभा \ GAC_64 \ System.Data की निर्देशिका 01/19/2008 06:11 AM <DIR>। 01/19/2008 06:11 AM <DIR> ।। 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 फ़ाइल (ओं) को 0 बाइट्स 3 डीआर (एस) 90,538,311,680 बाइट्स मुफ्त C: \ Windows \ विधानसभा \ GAC_64 \ System.Data> सीडी 2.0.0.0__b77a5c56195e89 C: \ Windows \ विधानसभा \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir सी की निर्देशिका: \ Windows \ विधानसभा \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c56195e89 04/11/2009 12:20 PM <DIR>। 04/11/2009 12:20 PM <DIR> ।। 04/11/2009 12:12 PM 3,008,512 System.Data.dll 1 फ़ाइल (ओं) 3,008,512 बाइट्स 2 डीआर (एस) 90,538,311,680 बाइट्स मुफ्त C: \ Windows \ विधानसभा \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
यहां आप System.Data का संस्करण 2.0.0.0__b77a5c561934e089 देख सकते हैं।
एक DLL को 5 भागों द्वारा पहचाना जाता है:
हालांकि पहले 3 आम तौर पर बड़े होते हैं।
चलो इसे तोड़ दो:
इसलिए जीएसी को कोड लाइब्रेरीज़ को स्टोर करने के लिए एक जगह होनी चाहिए ताकि वे मशीन पर चलने वाले सभी एप्लिकेशन तक पहुंच सकें।
प्रत्येक कंप्यूटर जहां सामान्य भाषा रनटाइम स्थापित किया जाता है, उसमें मशीन-वाइड कोड कैश होता है जिसे वैश्विक असेंबली कैश कहा जाता है। वैश्विक असेंबली कैश स्टोर असेंबली को विशेष रूप से कंप्यूटर पर कई अनुप्रयोगों द्वारा साझा किए जाने के लिए नामित किया गया है।
आपको केवल असेंबली कैश में वैश्विक असेंबली में स्थापित करके असेंबली साझा करना चाहिए, जब आपको आवश्यकता हो। एक सामान्य दिशानिर्देश के रूप में, विधानसभा निर्भरता को निजी रखें, और एप्लिकेशन निर्देशिका में असेंबलियों का पता लगाएं जब तक कि विधानसभा साझा करना स्पष्ट रूप से आवश्यक न हो। इसके अलावा, उन्हें असेंबली या मानवरहित कोड तक पहुंच बनाने के लिए वैश्विक असेंबली कैश में असेंबली स्थापित करना आवश्यक नहीं है।
MSDN में जो चीजें हैं, वे आपको आश्चर्यचकित कर सकती हैं ... आप इसे आमतौर पर एक लेख की तरह पढ़ सकते हैं। शीर्ष पर सीधी और सबसे महत्वपूर्ण बिट्स, जटिल विवरण गहरा हो जाता है। यह निश्चित रूप से मुझे बता सकता है कि यह बेहतर है।
ध्यान दें कि Visual Studio GAC के सभी DLL को संदर्भ विंडो के .NET टैब में प्रदर्शित करता है । (समाधान एक्सप्लोरर में एक परियोजना पर राइट-क्लिक करें और संदर्भ जोड़ें का चयन करें।) यह आपको अधिक मूर्त विचार देना चाहिए।
वैश्विक असेंबली कैश (GAC) .NET असेंबली को संग्रहीत करने के लिए विंडोज निर्देशिका में एक फ़ोल्डर है जिसे विशेष रूप से सिस्टम पर निष्पादित सभी अनुप्रयोगों द्वारा साझा किए जाने के लिए निर्दिष्ट किया जाता है। असेंबलियों को वैश्विक असेंबली कैश (GAC) में पंजीकृत करके मशीन पर कई अनुप्रयोगों के बीच साझा किया जा सकता है। GAC एक मशीन है जो .NET फ्रेमवर्क द्वारा रखी गई असेंबली का एक स्थानीय कैश है।
Exe आवेदन, सबसे पहले, एक वर्तमान निर्देशिका से एक उपनिर्देशिका का संदर्भ। और फिर, सिस्टम निर्देशिका। VS6.0 सिस्टम निर्देशिका थी .. विंडोज / सिस्टम 32। .NET सिस्टम निर्देशिका नीचे GAC पथ की तरह है।
जीएसी पथ
1) C: \ Windows \ असेंबली (.NET 2.0 ~ 3.5 के लिए)
2) C: \ Windows \ Microsoft.NET \ विधानसभा (.NET 4.0 के लिए)
GAC (व्यवस्थापक के रूप में) में असेंबली कैसे स्थापित करें
1) ड्रैग एंड ड्रॉप
2) Visual Studio कमांड प्रॉम्प्ट के साथ GacUtil.exe का उपयोग करें
gacutil -i [Path][Assembly Name].dll
GAC से एक असेंबली की स्थापना रद्द कैसे करें (व्यवस्थापक के रूप में)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh