أين يتم تثبيت التجميعات في GAC المخزنة جسديًا؟
-
03-07-2019 - |
سؤال
أريد تصدير التجميعات المدمجة في مشروعي. ولكن أين يتم تخزينها جسديًا؟
المحلول
لقد وجدت هذا المنشور بالفعل ، بعد أن كتبت سؤالي. من الجيد حقًا شرحًا:
ستتمكن من رؤيتهم إذا انتقلت إلى
c:\windows\assembly
مع Explorer ، حيث سترى قائمة تجميعات منسقة بشكل جيد.
يوضح امتداد shell المسؤول عن هذا العرض ليس فقط التجميعات في GAC ، ولكن أيضًا الإصدارات الأصلية من التجميعات المبللة مسبقًا باستخدام ngen.exe.
لكن الملفات لم يتم تخزينها فعليًا هنا - تمديد Shell ببساطة يقيس موقعها الحقيقي. يمكنك معرفة أين يتم تخزين الملفات حقًا عن طريق التنقل إلى نفس الدليل عبر موجه الأوامر.
يوجد في هذا الموقع عدد من الدلالات الفرعية ، بما في ذلك واحد اسمه GAC. دفن هنا تحت عدة طبقات من رموز التجزئة وأسماء التجميع توجد التجميعات الفعلية ، إلى جانب ملف .ini قديم يحتوي على الاسم القوي من بين أشياء أخرى. يجدر الاستكشاف في هذه المنطقة المجهولة فقط لفهم ما يجري تحت الأغطية ، على الرغم من أن حذرة من إجراء تغييرات لأن GAC تهدف إلى أن تكون غير شفافة.
نصائح أخرى
يتم تخزينها في ٪ systemroot ٪ في مجلد اسمه المجسم
المتغير ٪ Systemroot ٪ هو متغير بيئة خاص على مستوى النظام موجود على Microsoft Windows NT ومشتقاته. قيمتها هي موقع مجلد النظام ، بما في ذلك محرك الأقراص والمسار.
محرك الأقراص هو نفسه ٪ SystemDrive ٪ ويعتمد المسار الافتراضي على تثبيت نظيف على إصدار نظام التشغيل. بشكل افتراضي ، في تثبيت نظيف:
* Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS
* Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT
* Windows NT 3.5x uses \WINNT35
(من ويكيبيديا)
الموقع المادي لـ GAC هو دليل التجميع تحت ٪ Windir ٪ ، Fe
c:\windows\assembly
يمكنك نسخ التجميعات إلى GAC مع Explorer ، أو برنامج Gacutil.
لا ، يتم تخزين التجميعات الجسدية وليس في "C: Windows Assembly". يتم تخزين الإشارات فقط إلى التجمعات هناك. على سبيل المثال ، يتم تخزين التجميع "System.windows.forms.dll" (وكذلك الجزء الأكبر من مجموعات إطار العمل .NET) جسديًا في "C: windows winsxs" في العديد من الإصدارات ، تم تحسينها للعديد من المنصات (فقط انتقل إلى " C: windows winsxs "in explorer and type" system.windows.forms.dll "في مربع البحث). على سبيل المثال ، يمكنك إنشاء مجموعة مسموسة بقوة ، وتسجيلها على GAC ، ولكن موقعه الفعلي هو المكان الذي تضع فيه ملف التجميع. (على سبيل المثال "C: user ٪ اسم المستخدم ٪ documents Visual Studio 2008 Projects yourassemblyprojectname yourassemblyprojectname bin debug" - vs projects directory). وأكثر من ذلك ، في GAC لا يتم تخزين الإشارات إلا إلى التجميعات ، لذلك إذا قمت بإعادة بناء التجميع الخاص بك ، فسيستخدم التجميعات التي تستخدمها تجميعك ، من خلال الرجوع إليها من GAC ، ستستخدم أيضًا عملية إعادة البناء في التجميع.