কীভাবে জিএসি থেকে অ্যাসেমব্লি বের করবেন?


134

আমার সাথে একটি প্যাকেজ রয়েছে যার সাথে সরাসরি জিএসি-তে সমাহারগুলি ইনস্টল করা হয় (উদাহরণস্বরূপ% উইন্ডোজ% / এসেম্বলিতে গভীরতর কোথাও)।

আমি কীভাবে জিএসি থেকে সাধারণ ফাইল সিস্টেমে আসল অ্যাসেমব্লিকে (ডিএলএল) বাজেয়াপ্ত করব?

ধন্যবাদ।

উত্তর:


150

আমি এই নিবন্ধের পরামর্শটি জিএসি থেকে একটি সমাবেশ পেতে ব্যবহার করেছি ।

জিএসি থেকে ডিএলএল পান

একবার জিএসিতে মোতায়েন করা ডিএলএলগুলি (সাধারণত সি: \ উইন্ডোজ \ অ্যাসেমব্লিতে অবস্থিত) সাধারণ ডিএলএল ফাইল হিসাবে দেখা বা ব্যবহার করা যায় না। এগুলিকে সরাসরি ভিএস প্রকল্প থেকে উল্লেখ করা যায় না। বিকাশকারীরা সাধারণত মূল ডিএলএল ফাইলের একটি অনুলিপি রাখেন এবং প্রকল্পে এটি ডেভলপমেন্ট (ডিজাইন) সময়ে উল্লেখ করেন যা প্রকল্পের রান-টাইমের সময় জিএসি থেকে অ্যাসেম্বলি ব্যবহার করে।

ফাঁসির সময় (রান-টাইম) যদি সমাবেশে জিইসি-তে স্বাক্ষর করা এবং মোতায়েনের বিষয়টি পাওয়া যায় তবে সিএলআর স্বয়ংক্রিয়ভাবে ভিএস-তে ডিজাইনের সময় ডিএলএল পরিবর্তে জিএসি থেকে অ্যাসেম্বলিকে তুলে নিয়ে যায় বিকাশকারী মূল ডিএলএল মুছে ফেলেছে বা কোনও কারণে এটি না রাখার ক্ষেত্রে, জিএসি থেকে ডিএলএল ফাইল পাওয়ার একটি উপায় আছে। জিএসি থেকে ডিএলএল অনুলিপি করতে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন

  1. Regsvr32 / u সি চালান: I উইন্ডোস \ মাইক্রোসফট. নেট \ ফ্রেমওয়ার্ক \ v2.0.50727 f shfusion.dll

    • shfusion.dll হ'ল এক্সপ্লোরার এক্সটেনশন ডিএলএল যা জিএসি ফোল্ডারে আলাদা স্বতন্ত্র চেহারা দেয়। এই ফাইলটিকে নিবন্ধভুক্ত করা অ্যাসেম্বলি ক্যাশ ভিউয়ারকে সরিয়ে ফেলবে এবং জিএসি ফোল্ডারটি এক্সপ্লোরারটিতে কোনও সাধারণ ফোল্ডার হিসাবে দৃশ্যমান হবে।
  2. "% উইন্ডির% \ সমাবেশ \ GAC_MSIL" খুলুন।

  3. আপনার ডিএলএল সন্ধান করতে গভীরভাবে আপনার ডিএলএল ফোল্ডারে ব্রাউজ করুন।

  4. আপনার হার্ড ডিস্কের কোথাও ডিএলএল অনুলিপি করুন এবং সেখান থেকে আপনার প্রকল্পে এটি উল্লেখ করুন

  5. Shfusion.dll ফাইলটি পুনরায় নিবন্ধন করতে এবং জিএসি-র মূল স্বতন্ত্র দৃষ্টিভঙ্গি ফিরে পেতে "regsvr32% উইন্ডির% ir Microsoft.NET \ ফ্রেমওয়ার্ক \ <। নেট সংস্করণ ডিরেক্টরি> f shfusion.dll" চালান।


81
এটি কাজ করে তবে কিছুটা জটিল। আপনি যদি কমান্ড প্রম্পটকে ভয় না পান তবে আপনি কেবল প্রয়োজনীয় ডিরেক্টরিতে সিডি করতে পারেন এবং ডিএলএলকে সেভাবে অনুলিপি করতে পারেন।
চিজো

3
টোটালকম্যান্ডারটি কেবল ইনস্টল করুন, সমস্ত লুকানো ফাইলগুলি দেখার জন্য বিকল্পটি সক্ষম করুন এবং আপনি চান প্রতিটি সমাবেশ দখল করতে পারেন
প্যাট্রিক পিটারস

4
@ অ্যান্ড্রু, দেখে মনে হচ্ছে বিকল্পটি পাস করার shfusion.dllপরে DllInstall()প্রবেশের বিন্দুটি সমর্থন করে না । এই বিকল্পটি ছাড়াই সফলভাবে উপাদানটিকে পুনরায় নিবন্ধন করতে দেয়। regsvr32/i
ফ্রিডরিক হামিদি

9
আপনি পদক্ষেপ 1 এবং 2 এড়িয়ে যেতে পারেন এবং সরাসরি% উইন্ডির% \ সমাবেশ \ GAC_MSIL এ যেতে পারেন এবং সেখান থেকে ব্রাউজ করতে পারেন।
ক্রিশ্চিয়ান ফ্রেড

5
@ ক্রিশ্চিয়ান ফ্রেড কেবল একটি নোট: আমার জন্য, এটি কেবল রান ডায়ালগ থেকে সরাসরি করা যেতে পারে।
xr280xr

108

এখানে বর্ণিত পদ্ধতিটি খুব সহজ:

http://andreasglaser.net/post/2008/08/05/Extract-assembly-from-Global-Assembly-Cache-(GAC)-with-network-drive-mapping.aspx

নিবন্ধ থেকে সংক্ষিপ্তসার:

  • একটি নেটওয়ার্ক ড্রাইভ মানচিত্র (এক্সপ্লোরার -> সরঞ্জাম)
    • \ সারওয়ারনেম \ ফোল্ডারে মানচিত্র ( \\YourServer\C$\Windows\Assembly)
  • আপনি প্রশাসক হলে ভাগ করে নেওয়ার দরকার নেই
  • ড্রাইভে ব্রাউজ করুন এবং আপনার সমাবেশটি বের করুন

84

কমান্ড প্রম্পটটি খুলুন এবং টাইপ করুন:

cd  c:\windows\assembly\GAC_MSIL 

xcopy . C:\GacDump /s /y

এটি পুরো জিএসি-এর ডাম্প দেয়

উপভোগ করুন!


10
দীপকের উত্তরটি পরিষ্কার ছিল এবং উপযুক্ত পতাকা সহ এক্সকপি ব্যবহার করা হয়েছিল।
katbyte

পদক্ষেপে পদক্ষেপের ক্ষেত্রে সমস্যাগুলি ছড়িয়ে দেওয়ার পরে সবকিছু পেতে 5 সেকেন্ড সময় লেগেছিল বলে আমি এই উত্তরটিকে # 1 রেট দিয়েছি।
FBryant87

24

হ্যাঁ.

DisableCacheViewer রেজিস্ট্রি কী যুক্ত করুন

এইচকেএলএম \ সফ্টওয়্যার \ মাইক্রোসফ্ট \ ফিউশন under এর অধীনে ডিসিয়েবল ক্যাচিভিউয়ার নাম সহ একটি নতুন ডাবর কী তৈরি করুন এবং এর [DWORD] মান 1 তে সেট করুন।

উইন্ডোজ এক্সপ্লোরারে অ্যাসেম্বলি ফোল্ডারে ফিরে যান এবং এটি সাধারণ ফাইল সিস্টেম ভিউ হবে।


2
আন্ডার রেটেড উত্তর। ধন্যবাদ!
xr280xr

1
এটিই আসল সমাধান। পূর্বাবস্থায় ফিরিয়ে আনা সহজ এবং কোনও কমান্ড লাইনও প্রয়োজনীয় নয়।
ব্যবহারকারী 2920518

16

আমি মনে করি সবচেয়ে সহজ উপায় হ'ল ডেভিডের মতো কমান্ড লাইনের মাধ্যমে এটি করা। একমাত্র কৌশলটি .dll কেবল সি: \ উইন্ডোজ \ অ্যাসেমব্লিতে নেই। আপনাকে সি: \ উইন্ডোজ \ অ্যাসেম্বলি \ জিএসি \ [ASSEMBLY_NAME] \ [VERSION_NUMBER] _ [পাবলিক কে] নেভিগেট করতে হবে। তারপরে আপনি একটি অনুলিপি ব্যবহার করে এটি করতে পারেন:

[ASSEMBLY_NAME] অনুলিপি করুন। dll সি: \ (বা যে কোনও অবস্থান আপনি চান)

আশা করি এইটি কাজ করবে.


13

আমি যে সহজ উপায়টি পেয়েছি তা হ'ল কমান্ড প্রম্পটটি খুলুন এবং আপনি যে ফোল্ডারটি আপনি চান DLL না পাওয়া পর্যন্ত আপনি উল্লিখিত ফোল্ডারটি ব্রাউজ করেছেন - তারপরে আপনি অনুলিপি কমান্ডটি ব্যবহার করতে পারবেন। উইন্ডোজ এক্সপ্লোরারের এই ফোল্ডারটির একটি "সহায়ক" বিশেষ দৃষ্টিভঙ্গি রয়েছে।


আমি আজ সকালে একটি আকর্ষণীয় সমস্যা পেয়েছি। আমি জিএসিতে একটি ডিএলএল আপডেট করছি, এবং ব্যাকআপ নেওয়ার জন্য সেন্টিমিডি লাইন পদ্ধতিটি ব্যবহার করেছি। আমি যখন নতুন ডিএলএল (একই সংস্করণ নম্বর) আপলোড করার চেষ্টা করেছি, তখন আমি একটি ত্রুটি পেয়েছি যা কেবলমাত্র আমি যখন সেন্টিমিডি উইন্ডোটি বন্ধ করে দিই তখন চলে যায়। আমাকে কী ভুল হচ্ছে তা খুঁজে পেতে কয়েক মিনিট অভিশাপ দিয়েছিলেন!
নিলডি

11

রুন খুলুন তারপর টাইপ করুন %windir%\assembly\GAC_MSIL, এটি আপনার ডলগুলি ফোল্ডারগুলির ভিউতে খুলবে আপনি তারপরে আপনার dll নামের ফোল্ডারে নেভিগেট করতে পারবেন এবং খুলতে পারবেন, আপনি আপনার dll ফাইলটি খুঁজে পাবেন এবং সহজেই অনুলিপি করতে পারবেন


খুব সহজ সমাধান। ধন্যবাদ.
D block247

4

আমি পাওয়ারশেল জিএসি এর লেখক । পাওয়ারশেল জিএসি দিয়ে আপনি ফোল্ডারের কাঠামোগত পরিবর্তন যেমন জিএসি ইন্টার্নালগুলির উপর নির্ভর না করে জিএসি থেকে অ্যাসেমব্লিগুলি বের করতে পারেন।

Get-GacAssembly SomeCompany* | Get-GacAssemblyFile | Copy-Item -Dest C:\Temp\SomeCompany

3

এই এমএসডিএন ব্লগ পোস্টটি জিএসি থেকে একটি ডিএলএল উত্তোলনের পৃথক তিনটি উপায় বর্ণনা করে। এখনও দেওয়া পদ্ধতিগুলির একটি দরকারী সংক্ষিপ্তসার।


3

পরিবর্তে ফাইল ব্রাউজারটি "টোটাল কমান্ডার" ব্যবহার করুন।

  1. টোটাল কমান্ডারে "লুকানো / সিস্টেম ফাইলগুলি দেখান" সেটিংস সক্ষম করুন
  2. "সি: \ উইন্ডোজ \ সমাবেশ" এ ব্রাউজ করুন
  3. কপি

3

ভাবেন যে আমি রেজিস্ট্রি সংশোধন না করে বা কমান্ড লাইন, পাওয়ারশেল বা অন্য কোনও প্রোগ্রাম ব্যবহার না করেই জিএসি অভ্যন্তরে দেখার উপায় খুঁজে পেয়েছি:

একটি নতুন শর্টকাট তৈরি করুন (যে কোনও জায়গায়)। তারপরে লক্ষ্য হতে শর্টকাটটি সংশোধন করুন:

%windir%\assembly\GAC_MSIL\System

এই শর্টকাটটি খোলার ফলে আপনাকে জিএসি-র অভ্যন্তরীণ সিস্টেম ফোল্ডারে নিয়ে যাবে (যা প্রত্যেকেরই হওয়া উচিত) এবং আপনাকে একটি উচ্চতর ডিরেক্টরিতে সরিয়ে দেওয়ার এবং তারপরে যে কোনও অন্য ফোল্ডারে ব্রাউজ করার (এবং dll ফাইলগুলি দেখুন ইত্যাদি) এর দুর্দান্ত পার্শ্ব প্রতিক্রিয়া রয়েছে)

আমি এটি উইন্ডোজ 7 এবং উইন্ডোজ সার্ভার 2012 এ পরীক্ষা করেছি।

দ্রষ্টব্য: শর্টকাট তৈরি করার সময় এটি আপনাকে সেই লক্ষ্যটি ব্যবহার করতে দেয় না তবে এটি আপনাকে এডিট করতে দেয়।

উপভোগ করুন!


2

কেবল সি তে নেভিগেট করুন: \ উইন্ডোজ [সমাবেশ] ফোল্ডারটি ডান ক্লিক করুন এবং সংরক্ষণাগারে যুক্ত করুন নির্বাচন করুন

একটু অপেক্ষা কর

ভোলা আপনার জিএসি এর সমস্ত অ্যাসেমব্লিসি সমন্বিত একটি সংরক্ষণাগার ফাইল রয়েছে


2

পাওয়ারশেল স্ক্রিপ্ট থেকে আপনি এটি ব্যবহার করে দেখতে পারেন। আমার কেবল জিএসি-তে সমাবেশের একক সংস্করণ ছিল তাই এটি ঠিক কাজ করেছিল fine

cd "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\"
Get-ChildItem assemblypath -Recurse -Include *.dll |  Copy-Item -Destination "c:\folder to copy to"

যেখানে সমাবেশের পথটি ওয়াইল্ডকার্ড ব্যবহার করতে পারে।


0

অন্য একটি দিক - কেবলমাত্র এমএসআই ফাইলটি আনপ্যাক করুন এবং সেইভাবে গুডিগুলি পান। ইভেন্টের আনইনস্টল থেকে আপনাকে বাঁচায়। । ।


0

কমান্ড লাইন থেকে অনুলিপি করা অপ্রয়োজনীয়। আমি স্টার্ট উইন্ডো অনুসন্ধান থেকে ডিএলএলের নামে টাইপ করেছি। আমি আরও ফলাফল দেখুন পছন্দ করেছেন। জিএসি-র একজনকে অনুসন্ধান উইন্ডোতে ফিরে আসা হয়েছিল। আমি ডানদিকে এটি ক্লিক করেছি এবং ফাইল অবস্থান খুলুন। এটি সাধারণ উইন্ডোজ এক্সপ্লোরারে খোলা হয়েছে। আমি ফাইলটি অনুলিপি করেছি। আমি উইন্ডোটি বন্ধ করে দিয়েছি। সম্পন্ন.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.