2010-04-22 47 views
9

Después de convertir una aplicación híbrida ASP.NET MVC1 a MVC2 recibo el siguiente error cuando intento ejecutar la aplicación:El tipo o el nombre del espacio de nombres 'Mvc' no existe en el espacio de nombres 'System.Web'

el tipo o espacio de nombres 'MVC' no existe en el espacio de nombres 'System.Web' (? ¿falta una referencia de ensamblado)

el culpable allegeded en el archivo web.config es System.Web.Mvc:

<namespaces> 
    <add namespace="System.Web.Mvc"/> 
    <add namespace="System.Web.Mvc.Ajax"/> 
    <add namespace="System.Web.Mvc.Html"/> 

Hasta ahora mi investigación parece llevarme a creer que la versión 2 o f System.Web.Mvc no está instalado o no ha sido recogido.

He intentado crear un archivo> Nuevo proyecto basado en MVC 2 y eso está recogiendo la nueva versión (v2) de MVC. También he convertido algunos otros proyectos (que no eran híbridos) y se han convertido sin problemas a MVC2.

También desinstalé MVC1 para intentar eliminar referencias del GAC. Sin embargo, nada de esto ha funcionado.

¿Alguna idea?

Respuesta

9

Asegúrese de que tiene la redirección de enlace en su Web.config:

<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> 

Esto obliga MVC 2, incluso si MVC 1 está en la máquina.

también: MVC 1 tiene un espacio de nombres System.Web.Mvc, así que asegúrese de que también tiene:

<assemblies> 
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
+7

Fue su segunda sugerencia sobre declarar explícitamente el espacio de nombres System.Web.Mvc bajo ensamblajes que funcionó. Gracias Craig - ¡apreciado! – Guy

2

me encontré con somthing similar y la solución era cambiar la referencia a Microsoft.Web.Mvc modo copia local se estableció en True.

0

Tuve el mismo error y al hacer clic en el enlace de error de compilación detallado en la página se encontraron problemas con System.Web.Helpers, .Http, y .WebPages.

Después de hacer una copia de seguridad del sistema ejecuté update-package -reinstall 'y forcé una desinstalación/reinstalación de todos los paquetes. Esto obligó al archivo web.config a reconstruirse correctamente y las secciones dependentAssembly se construyeron correctamente.

Después de reconstruir la solución, se ejecutó por primera vez.

Nota, agregó la siguiente sección incorrecta providers a la 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> 

Esto sólo genera una advertencia de construcción, pero lo hice y eliminar a favor de la contexts elemento precedente.

Cuestiones relacionadas