إعادة توجيه ربط التجميع إلى ملف dll مخصص/غير موقع

StackOverflow https://stackoverflow.com/questions/1636555

  •  06-07-2019
  •  | 
  •  

سؤال

مشكلة

المشكلة الأساسية هي أنني أريد تصحيح بعض أكواد الطرف الثالث لمعرفة كيفية عملها حتى أتمكن من استبدال جزء منها.

هل هناك أي طريقة لإعادة توجيه الارتباط بحيث لا يستخدم ملف dll الموجود في GAC ولكن بدلاً من ذلك النسخة التي قمت بتجميعها بدلاً من ذلك (والتي ستكون إما غير موقعة أو تحتوي على مفتاح عام مختلف).


تفاصيل

العنصر المحدد المعني هو asp.net mvc، والسبب هو أن نسخة dll الموجودة في gac قد تم تحسينها ولا تتطابق بشكل صحيح مع الكود المصدري في خادم مصدر Microsoft.

أصدرت Microsoft المصدر لـ asp.net mvc حتى أتمكن من تنزيله وتجميع ملف dll بنفسي، لكن من الواضح أنني لا أستطيع التوقيع على ملف dll باستخدام مفتاحهم، يمكنني توقيعه باستخدام مفتاحي الخاص ولكن بعد ذلك سيكون له رمز مميز مختلف للمفتاح العام .

ستكون الإجابة البسيطة هي الإشارة إلى ملف dll الخاص بي في تطبيقي وإعادة ترجمة تطبيقي، ولكن بعد ذلك يجب علي أيضًا إعادة ترجمة كل ملفات dll الأخرى الخاصة بطرف ثالث والتي تشير إلى asp.net mvc (على سبيل المثال، mvccontrib).

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

المحلول

يمكنك ضبط التحقق من التوقيع باستخدام أداة SN.EXE.

sn -Vr assembly

قم بإلغاء تسجيل التجميع الأصلي من GAC ثم ضع التجميع الخاص بك في مجلد البرنامج واستخدم SN لتخطي التحقق.

نصائح أخرى

واجهت مشكلة مماثلة في "تصحيح" النظام مع ملفات dll/exes الموقعة المؤجلة.بالرغم من الاستخدام sn -Vr *,[PublicKey] لقد فشل مع SecurityException:فشل التحقق من صحة الاسم القوي.ثم، النظر في مواقع التسجيل: HKLM\Software\Microsoft\StrongName\Verification و HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification يبدو أنه يحتوي على بعض الإدخالات غير الصالحة.لقد قمت بإزالة الإدخالات غير الصالحة، ثم استخدمت sn مرة أخرى (لـ 64/32 بت) وعملت كالسحر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top