سؤال

لديّ مجموعة مطلقة بقوة ، تم تثبيتها على مجلد معين (وليس GAC).

الاسم كما هو موضح في العاكس هو:

"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4"

والمسار الذي يتم تثبيته هو

"c:\\QueueBall"

هل يمكنني استخدام Assembly.Load أو Assembly.LoadFrom لتحميله ، وإذا كان الأمر كذلك ، فكيف؟

هل يمكنني التأكد من تكريم التسمية القوية ، أي أن DLL الذي أقوم بتحميله هو حقًا هو الذي أتوقعه وليس دجالًا بنفس الاسم؟

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

المحلول

يمكنك استخدام loadfrom:

var assembly = Assembly.LoadFrom(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");

لاحظ أن هذا سيقوم أيضًا بتحميل التجميعات المشار إليها في مجال التطبيق الذي يقوم بتشغيل هذا الرمز. إذا كنت لا تريد هذا السلوك ، فيمكنك استخدام تحميل الملف طريقة.


تحديث:

يمكنك التحقق من هوية التجميع قبل تحميلها للتأكد من عدم العبث بها:

AssemblyName an = AssemblyName.GetAssemblyName(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
byte[] key = an.GetPublicKey();
Version version = an.Version;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top