c# - كيف يمكنني تسجيل ملف DLL.NET في GAC؟




dllregistration (10)

لقد قمت بعمل ملف .NET .DLL ، والذي أريد تسجيله في GAC .

لقد استخدمت هذا الأمر في موجه الأوامر في نظام التشغيل Windows Server 2003 :

C:\"Path of dll"\>  gacutil /i dllname.dll

تقول أن المسار غير صحيح.

هل أحتاج إلى استخدام هذا في موجه .NET cmd؟ إذا كان هذا هو ، لا يمكنني تحديد موقع موجه .NET cmd.


Answers

في حالة على windows 7 gacutil.exe (لوضع التجميع في GAC) و sn.exe (لضمان تفرد التجميع) يتواجد في C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin

ثم انتقل إلى مسار gacutil كما هو موضح أدناه تنفيذ الأمر أدناه بعد استبدال مسار التجميع الخاص بك

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin> gacutil / i "استبدل مسار التجميع الخاص بك ليتم وضعه في GAC"


كما قال ando ، فقط اسحب وإسقاط التجميع إلى المجلد C: \ windows \ assembly. إنها تعمل.


انك سوف تحتاج:

  • اسم قوي التجميع الخاص بك (Visual Studio ، خصائص المشروع ، علامة التبويب توقيع ، توقيع التجميع)
  • تغيير أحداث البناء (خصائص المشروع ، علامة التبويب إنشاء أحداث ، سطر الأوامر Post-build)
   cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
   gacutil.exe /i "$(TargetPath)" /f /nologo
   gacutil /l "$(TargetName)" /nologo

الآن ، في كل مرة تنشئ فيها مشروعك ، سيتم تثبيته على GAC.


لا تخبرك هذه الردود بأن gacutil موجود في C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 * بالمناسبة.

لم يكن لدي في مجلد بلدي v2.0. ولكنني حاولت سحب وإسقاط DLL في المجلد C: \ WINDOWS \ Assembly كما تم اقتراحه هنا سابقاً وكان ذلك أسهل ويعمل ، طالما أنها مكتبة .NET. لقد حاولت أيضا مكتبة COM وهذا فشل مع خطأ أنه كان يتوقع بيان التجميع. أعلم أن هذا لم يكن السؤال هنا ، لكني أعتقد أنني سأذكر أنه في حالة اكتشاف شخص ما أنه لا يمكنه إضافته ، فقد يكون هذا هو السبب.

-توم


يمكنك القيام بذلك باستخدام أداة gacutil . في أبسط صورها:

gacutil /i yourdll.dll

تجد موجه الأوامر Visual Studio في قائمة ابدأ ضمن البرامج -> Visual Studio -> أدوات Visual Studio .


جرب GACView إذا كان لديك خوف من الأوامر.

لم تقم بتعيين PATH بشكل صحيح في DOS.You تحتاج إلى توجيه المسار إلى حيث يقيم gacutil لاستخدامه في DOS.


تبدو الحلول المذكورة أعلاه رائعة. ومع ذلك ، لكي تكون بسيطًا ، كل ما عليك فعله هو أن أدخِل اسم التجميع مع مساره الكامل مثل:

gacutil -i C:\MyDlls\GacDeployedAssemblies\dllname.dll

الانتباه إلى C: \ MyDlls \ GacDeployedAssemblies


من علامة التبويب نشر ، اذهب إلى تطبيق الملفات ، ثم انقر فوق الملفات غير الضرورية ، وقم بإجراء الاستبعاد من موافق. إنشاء ملفات المشروع. وتشغيل المشاريع.


فقط اسحب ملف DLL وقم بإفلاته في المجلد C:\Windows\assembly باستخدام مستكشف Windows.


لماذا لا تستخدم كائن FileStream؟

public void SaveStreamToFile(string fileFullPath, Stream stream)
{
    if (stream.Length == 0) return;

    // Create a FileStream object to write a stream to a file
    using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length))
    {
        // Fill the bytes[] array with the stream data
        byte[] bytesInStream = new byte[stream.Length];
        stream.Read(bytesInStream, 0, (int)bytesInStream.Length);

        // Use FileStream object to write to the specified file
        fileStream.Write(bytesInStream, 0, bytesInStream.Length);
     }
}




c# gac dllregistration