اسم مساحة أو اسم الاسم "MVC" غير موجود في نظام المساحة ".
-
01-10-2019 - |
سؤال
بعد تحويل تطبيق ASP.NET MVC1 المختلط إلى MVC2 ، أحصل على الخطأ التالي عندما أحاول تشغيل التطبيق:
اسم مساحة الاسم أو اسم اسم "MVC" غير موجود في نظام المساحة ".
الجاني المزعوم في ملف web.config هو system.web.mvc:
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
يبدو أن التحقيق الذي أجريته يقودني حتى الآن إلى الاعتقاد بأن الإصدار 2 من system.web.mvc لم يتم تثبيته أو لم يتم التقاطه.
لقد حاولت إنشاء ملف> مشروع جديد استنادًا إلى MVC 2 وهو التقاط الإصدار الجديد (V2) من MVC. لقد قمت أيضًا بتحويل بعض المشاريع الأخرى (التي لم تكن هجينة) وقد تحولوا دون مشكلة إلى MVC2.
لقد قمت أيضًا بإلغاء تثبيت MVC1 لمحاولة إزالة الإشارات إليها من GAC. ومع ذلك ، لم ينجح أي من هذا.
أيه أفكار؟
المحلول
تأكد من أن لديك إعادة توجيه ملزمة في الويب الخاص بك.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Web.Mvc" />
</dependentAssembly>
</assemblyBinding>
</runtime>
هذا يجبر MVC 2 حتى لو كان MVC 1 على الجهاز.
أيضا: MVC 1 لديه ملف System.Web.Mvc
مساحة الاسم ، لذا تأكد من أن لديك أيضًا:
<assemblies>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
نصائح أخرى
صادفت شيئًا مشابهًا وكان الحل هو تغيير الإشارة إلى Microsoft.web.mvc ، لذا تم تعيين نسخة محلية على True.
كان لدي نفس الخطأ والنقر على رابط خطأ التجميع التفصيلي في الصفحة أظهر مشاكل مع System.Web.Helpers
, .Http,
و .WebPages
.
بعد النسخ الاحتياطي للنظام ركضت update-package -reinstall
وأجبرت إلغاء تثبيت/إعادة تثبيت جميع الحزم. هذا أجبر ملف web.config على إعادة بناءه بشكل صحيح و dependentAssembly
تم بناء أقسام الحق.
بعد إعادة بناء الحل الذي ركضه لأول مرة.
ملاحظة ، لقد أضاف السيئ التالي providers
قسم إلى web.config.
<contexts>
<context type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</contexts>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
هذا يولد فقط تحذيرًا للبناء ، لكنني قمت بإزالته لصالح المسبق contexts
عنصر.