एक ऐसा पैकेज है जिससे मुझे निपटना है जो असेंबली को सीधे जीएसी में स्थापित करता है (जैसे कि% विंडोज़% / असेंबली में कहीं गहरा)।
GAC से वास्तविक असेंबली (DLL) को सामान्य फ़ाइल सिस्टम में कैसे निकालूँ?
धन्यवाद।
एक ऐसा पैकेज है जिससे मुझे निपटना है जो असेंबली को सीधे जीएसी में स्थापित करता है (जैसे कि% विंडोज़% / असेंबली में कहीं गहरा)।
GAC से वास्तविक असेंबली (DLL) को सामान्य फ़ाइल सिस्टम में कैसे निकालूँ?
धन्यवाद।
जवाबों:
मैंने इस लेख से GAC से असेंबली प्राप्त करने के लिए सलाह का उपयोग किया ।
GAC से DLL प्राप्त करें
एक बार GAC में तैनात DLLs (आमतौर पर c: \ windows \ विधानसभा में स्थित) को एक सामान्य DLL फ़ाइल के रूप में देखा या उपयोग नहीं किया जा सकता है। उन्हें सीधे वीएस प्रोजेक्ट से संदर्भित नहीं किया जा सकता है। डेवलपर्स आमतौर पर मूल डीएलएल फ़ाइल की एक प्रति रखते हैं और इसे परियोजना में विकास (डिजाइन) समय पर संदर्भित करते हैं, जो परियोजना के रन-टाइम के दौरान जीएसी से विधानसभा का उपयोग करता है।
निष्पादन के दौरान (रन-टाइम) यदि विधानसभा को हस्ताक्षरित पाया जाता है और जीएसी में तैनात किया जाता है तो सीएलआर स्वचालित रूप से वीएस में डिज़ाइन समय के दौरान संदर्भित डीएलएल के बजाय जीएसी से विधानसभा को चुनता है। यदि डेवलपर ने मूल DLL को हटा दिया है या किसी कारण से नहीं है, तो GAC से DLL फ़ाइल प्राप्त करने का एक तरीका है। GAC से DLL की प्रतिलिपि बनाने के लिए निम्नलिखित चरणों का पालन करें
Regsvr32 / u C चलाएं: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ shuusionbll
- shfusion.dll एक एक्सप्लोरर एक्सटेंशन DLL है जो GAC फ़ोल्डर को एक अलग रूप देता है। इस फ़ाइल को अपंजीकृत करने से असेंबली कैश व्यूअर को हटा दिया जाएगा और GAC फ़ोल्डर तब एक्सप्लोरर में किसी भी सामान्य फ़ोल्डर के रूप में दिखाई देगा।
"% विंडर% \ असेंबली \ GAC_MSIL" खोलें।
अपने DLL को खोजने के लिए अपने DLL फ़ोल्डर को गहराई से ब्राउज़ करें।
DLL को अपनी हार्ड डिस्क पर कहीं कॉपी करें और इसे अपनी परियोजना में वहां से देखें
Shfusion.dll फ़ाइल को फिर से पंजीकृत करने और GAC के मूल विशिष्ट दृश्य को पुनः प्राप्त करने के लिए "regsvr32% windir% \ Microsoft.NET \ Framework \ <। NET संस्करण निर्देशिका> \ shfusion.dll" चलाएँ।
shfusion.dll
समर्थन नहीं करता है। उस विकल्प को स्वीकार करने से घटक को फिर से सफलतापूर्वक पंजीकृत करने की अनुमति मिलती है। DllInstall()
regsvr32
/i
यहाँ वर्णित विधि बहुत आसान है:
लेख से सारांश:
\\YourServer\C$\Windows\Assembly
)कमांड प्रॉम्प्ट खोलें और टाइप करें:
cd c:\windows\assembly\GAC_MSIL
xcopy . C:\GacDump /s /y
यह पूरे जीएसी का डंप देना चाहिए
का आनंद लें!
हाँ।
DisableCacheViewer रजिस्ट्री कुंजी जोड़ें
DisableCacheViewer नाम के साथ HKLM \ Software \ Microsoft \ Fusion \ के तहत एक नई dword कुंजी बनाएं और इसे [DWORD] मान 1 पर सेट करें।
असेंबली फ़ोल्डर में विंडोज एक्सप्लोरर पर वापस जाएं और यह सामान्य फ़ाइल सिस्टम दृश्य होगा।
मुझे लगता है कि सबसे आसान तरीका यह है कि डेविड कमांड की तरह कमांड लाइन के माध्यम से इसे करें। एकमात्र चाल यह है कि .dll केवल C: \ Windows \ Assembly में स्थित नहीं है। आपको C: \ Windows \ Assembly \ GAC \ [ASSEMBLY_NAME] \ [VERSION_NUMBER] _ [सार्वजनिक कुंजी] पर नेविगेट करना होगा। तब आप एक कॉपी का उपयोग कर सकते हैं:
कॉपी [ASSEMBLY_NAME] .dll c: \ (या जो भी स्थान आप चाहते हैं)
उम्मीद है की वो मदद करदे।
आसान तरीका जो मैंने पाया है वह कमांड प्रॉम्प्ट को खोलने और आपके द्वारा उल्लिखित फ़ोल्डर के माध्यम से ब्राउज़ करने के लिए है जब तक आप डीएलएल नहीं चाहते हैं - आप इसे बाहर निकालने के लिए कॉपी कमांड को उपयोगकर्ता कर सकते हैं। विंडोज एक्सप्लोरर में इस फ़ोल्डर का "सहायक" विशेष दृश्य है।
उसके बाद RUN खोलें %windir%\assembly\GAC_MSIL
, यह आपके dll को फ़ोल्डर्स के दृश्य में खोलेगा जिसे आप तब अपने dll नाम के फ़ोल्डर में नेविगेट कर सकते हैं और इसे खोल सकते हैं, आपको अपनी dll फाइल मिल जाएगी और इसे आसानी से कॉपी कर सकते हैं।
मैं PowerShell GAC का लेखक हूं । PowerShell GAC के साथ आप GAC इंटर्नल के आधार पर असेंबली को असेंबली से निकाल सकते हैं जैसे फ़ोल्डर संरचना बदलना।
Get-GacAssembly SomeCompany* | Get-GacAssemblyFile | Copy-Item -Dest C:\Temp\SomeCompany
यह MSDN ब्लॉग पोस्ट GAC से DLL निकालने के तीन अलग-अलग तरीकों का वर्णन करता है। अब तक दिए गए तरीकों का एक उपयोगी सारांश।
मुझे लगता है कि मैंने रजिस्ट्री को संशोधित किए बिना या कमांड लाइन, पावरशेल या किसी अन्य प्रोग्राम का उपयोग किए बिना जीएसी के अंदर देखने का एक तरीका निकाला है:
एक नया शॉर्टकट बनाएं (कहीं भी)। फिर लक्ष्य के लिए शॉर्टकट को संशोधित करें:
%windir%\assembly\GAC_MSIL\System
इस शॉर्टकट को खोलना आपको GAC (जो हर किसी के पास होना चाहिए) के अंदर सिस्टम फ़ोल्डर में ले जाता है और आपको किसी उच्च निर्देशिका में स्विच करने और फिर आपके द्वारा इच्छित किसी अन्य फ़ोल्डर में ब्राउज़ करने और (dll फ़ाइलों को देखने आदि) का अद्भुत दुष्प्रभाव होता है।
मैंने इसे विंडोज 7 और विंडोज़ सर्वर 2012 पर परीक्षण किया।
नोट: यह शॉर्टकट बनाते समय आपको उस लक्ष्य का उपयोग नहीं करने देगा लेकिन यह आपको इसे संपादित करने देगा।
का आनंद लें!
पॉवरशेल स्क्रिप्ट से, आप यह कोशिश कर सकते हैं। मेरे पास GAC में केवल असेंबली का एक ही संस्करण था, इसलिए यह ठीक काम कर रहा था।
cd "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\"
Get-ChildItem assemblypath -Recurse -Include *.dll | Copy-Item -Destination "c:\folder to copy to"
जहां विधानसभा पथ वाइल्डकार्ड का उपयोग कर सकते हैं।
एक अन्य दिशा - बस MSI फ़ाइल को अनपैक करें और उस तरह से उपहार प्राप्त करें। आपको अंतिम रूप से अनइंस्टॉल से बचाता है। । ।
कमांड लाइन से नकल करना अनावश्यक है। मैंने प्रारंभ विंडो खोज से DLL के नाम पर टाइप किया। मैंने और परिणाम देखें। GAC में से एक को खोज विंडो में वापस किया गया था। मैंने उस पर राइट क्लिक किया और कहा कि फ़ाइल स्थान खोलें। यह सामान्य विंडोज एक्सप्लोरर में खोला गया। मैंने फाइल कॉपी की। मैंने खिड़की बंद कर दी। किया हुआ।