تحميل مجموعة الاسم بقوة من مسار معين؟
-
29-09-2019 - |
سؤال
لديّ مجموعة مطلقة بقوة ، تم تثبيتها على مجلد معين (وليس 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;
لا تنتمي إلى StackOverflow