سؤال

أحتاج إلى إعادة إنشاء مزود في ملف Web.config الخاص بي الذي يبدو شيئا مثل هذا:

<membership defaultProvider="AspNetSqlMemProvider">
  <providers>
    <clear/>
    <add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0"
         name="AspNetSqlMemProvider"
         type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"
    />
  </providers>
</membership>

ومع ذلك، أحصل على خطأ في وقت التشغيل قائلا لا يمكن تحميل هذه الجمعية، وأعتقد أنه لأن لدي أخطاء في الوثيقة. كيف يمكنني أن أبحث عن الوثيقة عن التجمع الخاص بي؟

بدلا من ذلك، هل سأذهب بطريقة خاطئة تماما مع هذا؟

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

المحلول

استخدام Powershell., ، يمكنك تنفيذ هذا البيان:

([system.reflection.assembly]::loadfile("c:\MyDLL.dll")).FullName

الناتج سوف يوفر الإصدار, حضاره و رمز المفتاح العام كما هو مبين أدناه:

MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a

نصائح أخرى

استخدام SN.EXE جدوى:

sn -T YourAssembly.dll

أو تحميل الجمعية في العاكس.

إذا كان لديك DLL المضافة إلى مشروعك، فيمكنك فتح ملف Csproj وشاهد العلامة المرجعية.

مثال:

<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

sn -T <assembly> في سطر الأوامر Visual Studio. إذا تم تثبيت التجميع في ذاكرة التخزين المؤقت للتجميع العالمي، فمن الأسهل الذهاب إلى C:\Windows\assembly وابحث عنها في قائمة جمعيات GAC.

في حالتك المحددة، قد تكون خلط النوع الكامل مع مرجع التجميع، قد ترغب في إلقاء نظرة على MSDN..

الجواب بسيط جدا استخدم أدوات .NET Framework sn.exe. وبعد حتى افتح موجه الأوامر Visual Studio 2008 ثم أشر إلى مجلد DLL الذي تريد الحصول على المفتاح العمومي،

استخدم الأمر التالي،

SN -T mydll.dll.

هذا سوف يمنحك رمز المفتاح العام. تذكر شيئا واحدا يعمل هذا فقط إذا تم توقيع الجمعية بشدة.

مثال

C:  Winnt  microsoft.net  Framework  v3.5> SN -T edmgen.exe Microsoft (R) .NET Framework اسم الأداة المساعدة اسم قوي 3.21022.8 حقوق الطبع والنشر (C) Microsoft Corporation. كل الحقوق محفوظة. رمز المفتاح العام هو B77A5C561934E089

يمكنني استخدام Windows Explorer، انتقل إلى C: Windows Asssiew، ابحث عن الشخص الذي أحتاجه. من الخصائص التي يمكنك نسخ publickeytoken.

هذا لا يعتمد على Visual Studio أو أي أدوات مساعدة أخرى يتم تثبيتها.

ما عليك سوى إضافة المزيد من المعلومات، لم أتمكن من العثور على الأداة المساعدة Sn.exe في المواقع المذكورة، في حالتي كانت في C: ملفات البرنامج (X86) Microsoft SDKS Windows V7.0A BIN

Assembly.LoadFile (@ "c: windows microsoft.net framework v4.0.30319 system.data.dll").

سوف يؤدي إلى

System.Data، الإصدار = 4.0.0.0، الثقافة = محايد، PublickeyToken = B77A5C561934E089

يمكنك أيضا التحقق من خلال الطريقة التالية.

انتقل إلى Run: اكتب مسار DLL الذي تحتاج إليه للمفتاح العام. ستجد 2 ملفات: 1. __assemblyinfo_.ini 2. ملف DLL

افتح ملف __assemblyinfo_.ini في المفكرة، هنا يمكنك أن ترى رمز المفتاح العام.

كما قالCRICE، يمكنك استخدام الأسلوب أدناه للحصول على قائمة بالتجميع التابع مع PublickeyToken

public static int DependencyInfo(string args) 
{
    Console.WriteLine(Assembly.LoadFile(args).FullName);
    Console.WriteLine(Assembly.LoadFile(args).GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false).SingleOrDefault());
    try {
        var assemblies = Assembly.LoadFile(args).GetReferencedAssemblies(); 

        if (assemblies.GetLength(0) > 0)
        {
            foreach (var assembly in assemblies)
            {
                Console.WriteLine(" - " + assembly.FullName + ", ProcessorArchitecture=" + assembly.ProcessorArchitecture);             
            }
            return 0;
        }
    }
    catch(Exception e) {
        Console.WriteLine("An exception occurred: {0}", e.Message);
        return 1;
    } 
    finally{}

    return 1;
}

أنا عادة استخدامها ك LinQPad. البرنامج النصي يمكنك الاتصال به كما

DependencyInfo("@c:\MyAssembly.dll"); من الرمز

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top