এই ত্রুটি এড়াতে আপনি এটি করতে পারেন:
- অ্যাসেম্বলিটি গতিশীলভাবে লোড করুন বা
- তৃতীয় পক্ষের সমাবেশে স্বাক্ষর করুন।
আপনি তৃতীয় পক্ষের সমাহারগুলি সাইন ইন নির্দেশাবলী পাবেন কোনো সাইন পরিষদের সাইন ইন (বিলম্ব সাইন ইন না করেই): .NET-Fu ।
তৃতীয় পক্ষের সমাবেশগুলিতে স্বাক্ষর করা হচ্ছে
একটি থার্পি-পার্টিতে স্বাক্ষর করার মূল নীতিটি হল
ildasm.exe
অন্তর্বর্তী ভাষা (আইএল) ব্যবহার করে সমাবেশকে ডিসসেম্বেস করুন :
ildasm /all /out=thirdPartyLib.il thirdPartyLib.dll
সমাবেশটি পুনর্নির্মাণ এবং স্বাক্ষর করুন:
ilasm /dll /key=myKey.snk thirdPartyLib.il
অতিরিক্ত রেফারেন্স ঠিক করা
উপরের পদক্ষেপগুলি ঠিক ততক্ষণ কার্যকর হয় যদি না আপনার তৃতীয় পক্ষের সমাবেশ ( এডল ) অন্য লাইব্রেরি ( B.dll ) উল্লেখ করে যা স্বাক্ষর করতে হবে। আপনি অবতরণ করতে পুনর্নির্মাণের এবং উভয় সাইন A.dll এবং B.dll উপরে কমান্ড ব্যবহার করে, কিন্তু রানটাইম এ লোড B.dll কারণ ব্যর্থ হবে A.dll মূলত একটি রেফারেন্স সঙ্গে নির্মিত হয়েছিল স্বাক্ষরবিহীন সংস্করণ B.dll ।
এই সমস্যার সমাধানটি উপরের 1 ধাপে উত্পন্ন আইএল ফাইলটি প্যাচ করা। আপনার রেফারেন্সে B.dll এর সর্বজনীন কী টোকেন যুক্ত করতে হবে। আপনি কল করে এই টোকেন পাবেন
sn -Tp B.dll
যা আপনাকে নিম্নলিখিত আউটপুট দেবে:
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.33440
Copyright (c) Microsoft Corporation. All rights reserved.
Public key (hash algorithm: sha1):
002400000480000094000000060200000024000052534131000400000100010093d86f6656eed3
b62780466e6ba30fd15d69a3918e4bbd75d3e9ca8baa5641955c86251ce1e5a83857c7f49288eb
4a0093b20aa9c7faae5184770108d9515905ddd82222514921fa81fff2ea565ae0e98cf66d3758
cb8b22c8efd729821518a76427b7ca1c979caa2d78404da3d44592badc194d05bfdd29b9b8120c
78effe92
Public key token is a8a7ed7203d87bc9
শেষ লাইনে সর্বজনীন কী টোকেন রয়েছে। তারপরে B.dll রেফারেন্সের জন্য আপনাকে A.dll এর আইএল অনুসন্ধান করতে হবে এবং নীচে টোকেন যুক্ত করতে হবে:
.assembly extern /*23000003*/ MyAssemblyName
{
.publickeytoken = (A8 A7 ED 72 03 D8 7B C9 )
.ver 10:0:0:0
}