ما هي الطريقة "الصحيحة" لتسجيل/تثبيت التجميع لدى GAC؟

StackOverflow https://stackoverflow.com/questions/205188

  •  03-07-2019
  •  | 
  •  

سؤال

يبدو أن هناك العديد من الطرق المختلفة لتسجيل التجميعات لدى GAC، حيث إنها "تعمل".ومع ذلك، ما هي الطريقة "الصحيحة" للقيام بذلك؟

ردًا على لو فرانكو (وجاكوتيل):

أنا أستخدم Gacutil للتطوير، ولكن يبدو لي أن هذه ليست الطريقة الصحيحة لتثبيته، نظرًا لأن gacutil لم يتم تضمينه في أدوات .NET المساعدة الأساسية بعد .NET 1.1 - إنها مجرد أداة مطور.

إضافي:إن Gacutil (كما هو موضح في الردود أدناه) غير قابل لإعادة التوزيع، وبالتالي لا ينبغي استخدامه في أي تطبيق تنوي تقديمه لأشخاص ليسوا مطورين.AKA أيها العملاء.يرى هذه التدوينة (والتعليقات) بقلم آرون ستيبنر.

ردًا على استخدام WIX:

قد يكون WIX رائعًا، ولكن كيف يعمل تحت الغطاء؟ما هي التفاصيل التي تجعل طريقة تثبيت WIX للتجميع هي الطريقة الصحيحة لتثبيته؟كيف ينظر إليه؟هل هي مكالمة نظام/.NET؟هل هناك بعض الاستدعاءات في ملف dll مدفون في مكان ما في System32 والذي يجب إجراؤه؟

(يحرر:يبدو أن WIX يستخدم MSI تحت الغطاء.انظر تعليقاتي في الإجابة المقبولة.)

التعديل النهائي:يبدو أن الطريقة الصحيحة لتثبيت التجميع على GAC هي استخدام مثبت Windows، ولا شيء آخر.سأقوم بتجربة Wix.شكرا لكم جميعا!

هل كانت مفيدة؟

المحلول

ومع WIX أود أن تفعل شيئا من هذا القبيل:

<DirectoryRef Id="MyDirectory" >
    <Component Id="MyComponent" Guid="PUT-GUID-HERE" DiskId="1">
        <File Id="MyAssembly" Name="MyAssembly.dll" Assembly=".net" KeyPath="yes" Source="MyAssembly.dll" />
    </Component>
</DirectoryRef>

عند استخدام الجمعية السمة = "الصافي" عن ملف في WIX، فإنه سيتم إنشاء إدخالات في جدول MsiAssembly وMsiAssemblyName لهذا المكون وعلامة على أنها عنصر GAC.

نصائح أخرى

http://blogs.msdn.com/astebner/archive/2006/11/04/why-to-not-use-gacutil-exe-in-an-application-setup.aspx

يبدو أنه يجب تجنب الجاكوتيل؛إنه ليس تطبيقًا قابلاً لإعادة التوزيع.بدلاً من ذلك، يبدو أن الطريقة "الصحيحة" لتثبيتها هي استخدام MSI، إحدى الطرق هي WIX، كما نشرها CheGueVerra أو برنامج نصي آخر.

وطريقة استخدام System.EnterpriseServices.Internal.Publish GacInstall ل.

والمزايا: يبدو أن أداة داخلية. لا ربما كل الحق في الاشياء.

والعيوب: كجزء من المثبت، وكنت لا تزال بحاجة لتقديم وتشغيل التطبيق الذي يدعو هذا (إلا إذا كان المثبت جعل لكم هو التطبيق المخصص الذي تقوم به على أي حال)

.

ولا صانع المثبت لديك وسيلة لتثبيت التجميع في GAC؟ لوحدك، وانا اقول GACUTIL:

http://msdn.microsoft.com/ أون لنا / مكتبة / ex0ss12c (VS.80) .aspx اتصال

إذا كنت لا تريد التعامل مع الاشياء gacutil نفسك، يمكنك دائما إنشاء مشروع الإعداد في الاستوديو المرئي.

ولكن كنت العصا مع gacutil نفسي.

استخدم جاكوتيل.

مزايا:يبدو أن العمل دائما.سلبيات:

  • يجب أن تحزم ملفًا إضافيًا قابلاً للتنفيذ مع برنامج التثبيت الخاص بك.
  • باعتبارها أداة مساعدة للتطوير، يبدو أن لها آثارًا جانبية إضافية (مثل فرض التثبيت مهما حدث).
  • لا ينبغي أن يتم تضمينها في أي قابلة لإعادة التوزيع المقدمة للعملاء.

وأفضل طريقة هي استخدام gacutil -i Library.dll.

والمشكلة الوحيدة مع gacutil هو أنه ليس في PATH الافتراضي للنظام. غير أنه في مكان قريب الثابتة إلى الدليل النوافذ، للحصول على إصدار صافي الإطار معين. بحيث يمكنك استخدام سطر الأوامر التالية لتنفيذ ذلك من أي مكان:

%SystemRoot%\Microsoft.Net\Framework\v1.1.4322\gacutil -i

وPS: مجرد نسخ التجميع الخاص بك إلى C: \ WINDOWS \ والتجمع لا تعمل. يظهر إكسبلورر فقط عرض مبسط من المجلد الذي يحتوي على الكثير في الواقع من مجلدات مختلفة لأنواع مختلفة من التجمعات. سوف يقوم بعمل نسخة في ذلك من المثبت لا تحريك كل العمليات التي تتم من قبل المستكشف على السحب والإفلات. (مكتوب هنا لأنني لم يكن لديك ما يكفي من سمعة لم تعلق حتى الان على وظائف أخرى).

ونسخ مباشرة إلى٪ WINDIR٪ \ الجمعية.

وميزة: واضحة

والعيب: AFAIK،٪ \ الجمعية٪ WINDIR فقط <م> يحدث أن يكون حيث هو الآن، وأنها الموقع عرضة للتغيير. هذا من شأنه أن يجعل من كسر في الإصدارات المستقبلية من النوافذ أو إذا chaneges سلوك هذا المجلد. وهذا ربما ليست الطريقة الصحيحة.

والحرمان الشديد: كما قال madmath:

<اقتباس فقرة> مجرد نسخ التجميع الخاص بك إلى C: \ WINDOWS \ والتجمع لا تعمل. يظهر إكسبلورر فقط عرض مبسط من المجلد الذي يحتوي على الكثير في الواقع من مجلدات مختلفة لأنواع مختلفة من التجمعات. سوف يقوم بعمل نسخة في ذلك من المثبت لا تحريك كل العمليات التي تتم من قبل المستكشف على السحب والإفلات. (مكتوب هنا لأنني لم يكن لديك ما يكفي من سمعة لم تعلق حتى الان على وظائف أخرى).
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top