سؤال

مرحبًا يا رفاق ، لقد حصلت على مشروع موقع ASP.NET على الويب الذي يصر لسبب ما على الرجوع إلى كل من MSCORLIB 1.0.5 و MSCORLIB 2.0 ، ولا يمكنني معرفة السبب.

لقد قمت بتحليل جميع DLLs المشار إليها باستخدام NDepend ، ويبدو أنها جميعها تشير فقط إلى MSCORLIB 2.0. لقد حصلت على مراجع ويب زوجين ، لكن لا يمكنني تخيل سبب إنشاء ذلك مرجعًا إضافيًا إلى 1.0 DLL.

أي شخص لديه أي أفكار لماذا سأحصل على هذه المرجع الإضافي ، أو ما يمكنني استخدامه لمعرفة تلك المعلومات؟ Ndepend رائع ، لكنه يعود فقط ويقول "تم العثور على مرجعين ، باستخدام الإصدار الأحدث" ، لذلك لا يساعدني في معرفة سبب مرجع إضافي ...

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

المحلول

أعتقد في هذه المرحلة أفضل رهان لك هو استخدام ildasm. سيؤدي استخدام ildasm على التجميع إلى طرح عقدة تدعى "بيان". انقر نقرًا مزدوجًا على تلك العقدة وسيقوم بتفريغ تمثيل IL لمراجع التجميع بما في ذلك رقم الإصدار المرجع. كرر هذا لجميع DLL الخاص بك حتى تجد الإصدار الذي يشير إلى الإصدار 1.0.

تعديل

هناك حل آخر ممكن هو تعداد Assembly القيم وهناك مرتبطة GetReferencedAssemblies طريقة. هذا سيعود مجموعة من AssemblyName القيم التي لها عضو في الإصدار المقابل. يجب أن يحتوي هذا على الإصدار الفعلي من التجميع المشار إليه مقابل التحميل الذي تم تحميله بالفعل.

لست متأكدًا بنسبة 100 ٪ في هذا الأمر وليس لدي طريقة مريحة لاختبارها الآن.

نصائح أخرى

حاول إزالة المرجع وإعادة الترسيب - سيخبرك ذلك بما يعتمد عليه (إذا كان أي شيء) على الإصدار الأقدم.

قد يكون الإحالة الخاطئة في ملف web.config الخاص بك.

العطف،

دان

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