C# الحصول على إصدار من DLL غير المدير
-
20-09-2019 - |
سؤال
أنا أتصل بـ DLL غير المدير من رمز C# المدار وأردت التحقق من الاتصال بالإصدار الصحيح.
الكود الذي أحاول تحميله التجميع (إلى بعد ذلك الحصول على ملف المورد ثم الحصول على الإصدار) هو: cur_version = assembly.loadfile ("x: workspace yreceipts_pos yrprintprocessor debug yrprintprocessor.dll") ؛ إنه فشل بسبب هذا الخطأ:The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
هل يعرف أي شخص كيفية الالتفاف على هذا أو لديه طريقة أفضل للتحقق من إصدار DLL غير المدير من رمز C# المدارة؟
شكرا مقدما ، ريتشارد
المحلول
كما ذكر logicnp ؛ Assembly.load مخصص للتجميعات المدارة فقط. لتحديد إصدار أي ملف إصدار-يمكنك استخدام system.diagnostics.fileversioninfo.getversioninfo (اسم الملف) ولتحميل الإجراءات غير المدارة والاتصال بها في DLLs ، يمكنك الرجوع إلى هذه المقالات:
http://blogs.msdn.com/jonathanswift/archive/2006/10/02/780637.aspx http://blogs.msdn.com/jonathanswift/archive/2006/10/03/dynamically-calling-an-unmanaged-dll-from-net-_2800_c_23002900_.aspx
حظا طيبا وفقك الله...
نصائح أخرى
السبب في فشله هو أنه لا يمكنك استخدام التجميع. تحميل لتحميل DLL غير المدارة. انظر الرابط الذي اقترحه ديفيد براون.