আমি কীভাবে একটি নির্দিষ্ট ডেল এর জন্য পাবলিককি টোকেনকে খুঁজে পাব?


197

আমাকে আমার ওয়েব কোডফাইগ ফাইলে এমন একটি সরবরাহকারী পুনরায় তৈরি করতে হবে যা দেখতে এরকম কিছু দেখাচ্ছে:

<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>

তবে, এই সমাবেশটি লোড করা যাবে না বলে আমি রানটাইম ত্রুটি পেয়েছি এবং আমি মনে করি এটি আমার কাছে ভুল পাবলিক্যকি টোকেন আছে। আমি কীভাবে আমার সমাবেশের জন্য পাবলিককি টোকেনকে সন্ধান করব?

বিকল্পভাবে, আমি কি এর সাথে পুরোপুরি ভুল পথে যাচ্ছি?


উত্তর:


282

পাওয়ারশেল ব্যবহার করে আপনি এই বিবৃতিটি কার্যকর করতে পারেন:

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

আউটপুট নীচে প্রদর্শিত হিসাবে সংস্করণ , সংস্কৃতি এবং পাবলিককি টোকেন সরবরাহ করবে :

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

1
ধন্যবাদ! আপনার পদ্ধতিটি কেবলমাত্র আমার জন্য কাজ করেছে sn -T dllname.dll আমি যখন এটি চালাত তখন কেবলমাত্র সাহায্যের পাঠ্যটি
দেখাত

1
এটা নিখুঁত! অতিরিক্ত সরঞ্জাম ইনস্টল করা এড়িয়ে চলুন।
নিরভ

1
মহান! এটি কোনও কাজ করে না যখন পাবলিককি টোকেন উপলব্ধ নেই (অর্থাত্ স্বাক্ষরবিহীন সমাবেশগুলি)
MovGP0

2
সি # ইন্টারেক্টিভতে, আপনি কল করতে পারেন: কনসোল.উরাইটলাইন (System.Reflection.Asorses.LoadFile (@ "c: \ some.dll")। ফুলনাম);
অরি রহিমজাদেহে

2
বিরক্তিকরভাবে, পাওয়ারশেল.এক্সপি কলটি শেষ হওয়ার পরেও ডেলটিতে একটি লক রাখে। আমার সমাধানটি আবার তৈরি করতে পারার আগে পাওয়ারশেল কনসোলটি বন্ধ করে দেওয়া দরকার ছিল।
সিই ম্যাকশারফেস

141

Sn.exe ইউটিলিটি ব্যবহার করে :

sn -T YourAssembly.dll

বা রিফ্লেক্টরে অ্যাসেম্বলি লোড করা ।


31
sn.exe সাধারণত সি এর অধীনে নিম্নলিখিত যে কোনও একটি স্থানে পাওয়া যায়: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ: সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন, সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট SDKs \ উইন্ডোজ \ v7.0A \ বিন \ x64, সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে, উইন্ডোজ \ v8.0A \ বিন ET নেটফেক্স X.০ সরঞ্জাম
ডেভিড.বারখুইজেন

মনে মনে, কীটি কেস-সংবেদনশীল। -t (লোয়ার কেস) "" কীটি টোকেনে রূপান্তর করতে ব্যর্থ হয়েছে - অবৈধ সংসদীয় পাবলিক কী give "দেবে, যা আপনাকে ভুল দিক থেকে অনুসন্ধানে প্রেরণ করবে।
অ্যাক্সেস_গ্রন্থিত

31

আপনার প্রকল্পে যদি ডিএলএল যুক্ত হয় তবে আপনি সিএসপ্রোজ ফাইলটি খুলতে পারেন এবং রেফারেন্স ট্যাগটি দেখতে পারেন।

উদাহরণ:

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

23

sn -T <assembly>ভিজ্যুয়াল স্টুডিও কমান্ড লাইনে। যদি কোনও অ্যাসেম্বলি বিশ্বব্যাপী সমাবেশের ক্যাশে ইনস্টল করা থাকে তবে C:\Windows\assemblyএটি জিএসি অ্যাসেমব্লির তালিকাতে গিয়ে খুঁজে পাওয়া সহজ ।

আপনার নির্দিষ্ট ক্ষেত্রে, আপনি সমাবেশ রেফারেন্সের সাথে পুরো নামটি মিশ্রণ করছেন, আপনি এমএসডিএন একবার দেখে নিতে পারেন ।


8

উত্তর। নেট ফ্রেমওয়ার্ক সরঞ্জামগুলি ব্যবহার করা খুব সহজ sn.exe। সুতরাং ভিজ্যুয়াল স্টুডিও ২০০ Command কমান্ড প্রম্পটটি খুলুন এবং তারপরে আপনি যে পাবলিক কী পেতে চান তার জন্য dll এর ফোল্ডারটি নির্দেশ করুন,

নিম্নলিখিত কমান্ড ব্যবহার করুন,

sn –T myDLL.dll

এটি আপনাকে সর্বজনীন কী টোকেন দেবে। একটি জিনিস মনে রাখবেন এটি কেবল তখনই কার্যকর হয় যদি সমাবেশটি দৃ strongly়ভাবে স্বাক্ষর করতে হয়।

উদাহরণ

সি: IN উইনএনটি \ মাইক্রোসফ্ট.নেট \ ফ্রেমওয়ার্ক \ v3.5> এসএন-টি এডমজেন.এক্সে

মাইক্রোসফ্ট (আর)। নেট ফ্রেমওয়ার্ক স্ট্রং নেম ইউটিলিটি সংস্করণ 3.5.21022.8
কপিরাইট (গ) মাইক্রোসফ্ট কর্পোরেশন। সমস্ত অধিকার সংরক্ষিত.

সর্বজনীন কী টোকেনটি b77a5c561934e089

আপনি ভিসুয়াল স্টুডিও 2013 আছে এবং আপনি খুঁজে পাচ্ছি না "ডেভেলপার কমান্ড VS2013 জন্য প্রম্পট" Go কিভাবে এটা ঠিক করার জন্য এখানে একটি চেহারা আছে এমন: stackoverflow.com/a/22702405/187650
juFo

নোট করুন যে এই সরঞ্জামটি উইন্ডোজের সাথে আসে না।
ইয়ান বয়ড

4

আমি উইন্ডোজ এক্সপ্লোরার ব্যবহার করি, সিতে নেভিগেট করুন: \ উইন্ডোজ \ অ্যাসেম্বলি, আমার যা প্রয়োজন তা সন্ধান করুন। সম্পত্তি থেকে আপনি পাবলিককি টোকেন অনুলিপি করতে পারেন।

এটি ভিজ্যুয়াল স্টুডিও বা ইনস্টল করা অন্য কোনও ইউটিলিটিগুলির উপর নির্ভর করে না।


3

কেবলমাত্র আরও তথ্য যুক্ত করা, আমি বর্ণিত স্থানগুলিতে sn.exe ইউটিলিটিটি সন্ধান করতে সক্ষম হইনি, আমার ক্ষেত্রে এটি সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন ছিল


আপনি যদি ভিজ্যুয়াল স্টুডিও কমান্ড প্রম্পটটি খোলেন এটি আপনার পথে হওয়া উচিত।
নেটট্রেস

: এই পরীক্ষা করে দেখুন stackoverflow.com/questions/3045033/...
ThePatelGuy

2

Assembly.LoadFile (@ "সি: \ উইন্ডোজ \ Microsoft.NET \ ফ্রেমওয়ার্ক \ v4.0.30319 \ system.data.dll")। FULLNAME

ফলাফল হবে

সিস্টেম.ডাটা, সংস্করণ = 4.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = b77a5c561934e089


1

যেমন @ ক্রিস বলেছেন যে আপনি পাবলিককি টোকেনের সাথে নির্ভরশীল সমাবেশের তালিকা পেতে নীচের পদ্ধতিটি ব্যবহার করতে পারেন

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;
}

আমি সাধারণত এটি লিনকপ্যাড হিসাবে ব্যবহার করি স্ক্রিপ্ট আপনি এটি হিসাবে কল করতে পারেন

DependencyInfo("@c:\MyAssembly.dll"); কোড থেকে


0

আপনি নিম্নলিখিত পদ্ধতি দ্বারা পরীক্ষা করতে পারেন।

রান এ যান: ডিএলএল এর পাথটি টাইপ করুন যার জন্য আপনার সার্বজনীন কী প্রয়োজন। আপনি 2 টি ফাইল পাবেন: 1. __AschoolInfo_.ini 2. ডিএলএল ফাইল

নোটপ্যাডে এই __As आशीर्वादInfo_.ini ফাইলটি খুলুন, আপনি এখানে পাবলিক কী টোকেন দেখতে পাবেন।

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