La solución MVC3 de Buiding salió bien, pero tengo un error en el navegador:
Mensaje de error del compilador: CS0234: El tipo o nombre de espacio de nombres 'Html' no existe en el espacio de nombres 'System.Web.Mvc' (¿falta una referencia de ensamblado?)
Source Error:
Line 25: <add namespace="System.Web.Mvc" />
Line 26: <!--<add namespace="System.Web.Mvc.Ajax" />-->
Line 27: <add namespace="System.Web.Mvc.Html" />
Line 28: <add namespace="System.Web.Routing" />
Line 29: <add namespace="System.Web.WebPages" />
He instalado paquetes para la solución NuGet
y los he configurado para todos los proyectos MVC3
. Ciervas MVC3
incluyen bibliotecas System.Web.Mvc.Ajax
, System.Web.Mvc.Html
y otros? ¿Por qué recibo el error?
En la carpeta References, tengo System.Web.Mvc
Runtime version: v4.0.30319
,
Version: 3.0.0.0
Web.config
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
<httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<machineKey compatibilityMode="Framework45" />
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
MSDN el espacio de nombres System.Web.Mvc
archivo packages.config
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0-rc" />
<package id="jQuery" version="1.7.2" />
<package id="jQuery.UI.Combined" version="1.8.11" />
<package id="jQuery.Validation" version="1.9" />
<package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" />
<package id="Microsoft.AspNet.Providers.Core" version="1.0" />
<package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" />
<package id="Microsoft.AspNet.Razor" version="1.0.20105.408" />
<package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<package id="Modernizr" version="2.0.6" />
<package id="Moq" version="4.0.10827" />
<package id="Ninject" version="3.0.1.10" />
</packages>
c#
asp.net-mvc-3
J.Olufsen
fuente
fuente
System.Web.MVC
no copiado a labin
carpeta desde MS14-059Respuestas:
Limpie su solución y luego establezca la propiedad de esos archivos en
Copy Local = True
.Para establecer la propiedad Copiar local en Verdadero o Falso
En el Explorador de soluciones, haga clic en el botón Mostrar todos los archivos para mostrar el nodo Referencias.
fuente
System.Web.Mvc
Por alguna razón, DOS de mis soluciones tienen proyectos web que desinstalaron espontáneamente asp.net MVC de alguna manera. Lo instalé desde Nuget y ahora ambos trabajan de nuevo. Esto sucedió después de un lote reciente de actualizaciones de Windows que incluía actualizaciones de .NET Framework para la versión que estaba usando (4.5.1).
Editar: Desde el Blog de Herramientas y Desarrollo Web .Net:
¡La actualización de seguridad de Microsoft Asp.Net MVC MS14-059 rompió mi compilación!
fuente
Este normalmente me atrapa cuando ejecuto desde IIS y el grupo de aplicaciones para el sitio predeterminado está configurado en .NET versión 2.0. Cuando se usa IIS desde Visual Studio, crea un directorio virtual pero aún se ejecuta bajo el grupo de aplicaciones del sitio predeterminado. Si usa la compilación en el servidor web, haga clic derecho en su proyecto web, vaya a propiedades y asegúrese de ejecutarlo con la versión correcta de .NET. En IIS, verifique la versión .NET en su grupo de aplicaciones.
Siguiendo con mi último comentario sobre cómo se creó el proyecto, ¿está incluyendo correctamente los ensamblajes, como se muestra a continuación (tomado del archivo web.config predeterminado generado por la plantilla de proyecto MVC3 en VS10):
fuente
Necesita actualizar MVC.
fuente
Tuve el mismo problema: mi escenario era que estaba haciendo referencia al nuevo System.Web.Mvc.dll desde una carpeta lib y no tenía "Copiar local" establecido en verdadero. La aplicación estaba volviendo a la versión en el GAC que no tenía los espacios de nombres correctos (Html, Ajax, etc.) y me estaba dando el error de tiempo de ejecución.
fuente
Mi solución estaba en Administrar paquetes Nuget para solución ... - Tenía innumerables actualizaciones que hacer para algunos paquetes.
Permítanme retroceder medio paso y decir que me equivoqué porque moví la solución y los proyectos de una carpeta a otra ... así que las cosas ya estaban fuera de control en comparación con lo que los proyectos pensaban que estaban. Todo se movió bien, pero aparentemente Nuget se confunde a menos que use un enfoque diferente al que yo hice.
Volver a la solución ... Simplemente fui a Administrar paquetes Nuget para la solución ... >> Actualizaciones >> Microsoft y .NET y presioné el botón Actualizar todo .
Todo volvió a la normalidad y feliz.
fuente
Descargué un proyecto de mvc 5 y el problema ofensivo apuntaba a
Con este mensaje de error:
-> en el que llegué a esta página web y probé una limpieza y algunas cosas anteriores, etc.
Lo que funcionó para mí fue solo
fuente
Ejecutar el siguiente comando en el administrador de paquetes nuget lo arregló para mí:
fuente
Esta respuesta es bastante tardía dada la fecha de la pregunta, pero alguien puede encontrarla útil.
Ninguna de las soluciones anteriores funcionó para mí en Visual Studio 2012 en un proyecto local, Net Framework 4.5 MVC 4. Por contexto, estaba siguiendo un tutorial sobre la creación de una API web básica en CodeProject ( http://www.codeproject.com/ Artículos / 615805 / Creación de una huella limpia-mínima-ASP-NET-WebAPI ) cuando me encontré con este problema.
Lo que funcionó para mí fue agregar explícitamente "System.Web.Mvc" a las referencias de mi aplicación, a pesar de que la aplicación ya hacía referencia a "System.Web".
fuente
Tuve el mismo problema, pero ninguno de los anteriores funcionó para mí. Sin embargo, me pusieron en la dirección correcta.
Por ejemplo, cuando configuro la opción "Copiar local" en "verdadero" para la referencia de System.Web.Mvc, la vuelve a establecer automáticamente en False.
Tengo varios proyectos que dependen de la referencia System.Web.Mvc en mi solución, pero solo uno causó este problema. En VS 2012, esta referencia está etiquetada con el triángulo de atención amarillo.
Encuentre esta referencia => eliminarla => volver a agregarla
Eso me lo arregló. Espero que esto ayude
fuente
Ver y verificar las rutas de referencia en su csproj.
Quité las referencias a System.Web.Mvc (y otras) y las volví a agregar a una ruta personalizada.
C:\Project\OurWebReferences
Sin embargo, después de hacer esto, la ruta de referencia en el csproj todavía no cambió. ESTABA
Cambiado a manualmente
Las rutas son solo un ejemplo.
fuente
Para mí, la solución era asegurar que todos los proyectos se construyeran para la misma CPU, en mi caso x86
fuente
Copiar Local = True fue resolver para uno de mis proyectos. Pero en otro proyecto, obtengo el mismo error, intenté configurar Copy Local = true, pero no resolvió mi problema. Cambiar el marco de destino de 4.5.1 a 4.5 en las propiedades del proyecto Ayudado con esto.
fuente
Hice algo realmente estúpido (y tal vez tú también lo hiciste).
Estaba tratando de llamar
System.Web.Mvc.Html.Partial("<Partial Page>")
System.Web.Mvc.Html es un espacio de nombres y no una clase y no leí mi mensaje de error tan bien, así que interpreté mi error ya que la clase
Html
no existe en el espacio de nombres System.Web.Mvc y así es como terminé aquí arriba (estúpido lo sé).Todo lo que necesitaba hacer era agregar una declaración de uso
@using System.Web.Mvc.Html
a mi página y luego@Html.Partial
funcionó como se esperaba.fuente
si alguno de los anteriores no resuelve su problema, simplemente configure las propiedades de System.Web.Mvc.dll para copiar el ture local.
va a resolver
fuente
Tuve el mismo problema, pero en mi caso se originó por otro factor. Escribo esto para ayudar a otras personas con el mismo problema. Tengo una solución con múltiples proyectos. dos de ellos funcionan con System.Web.Mvc, normalmente nuestra referencia apuntaba a paquetes externos donde controlamos la versión utilizada. Por alguna razón, una de las referencias del proyecto va a GAC y apunta a la dll de GAC (versión 4.0.0.1) y el programa recibió el error. Para corregirlo:
Verificación simple si las referencias a System.Web.Mvc apuntan a la misma dll en la misma ruta de directorio.
Espero que te sirva de ayuda.
fuente
He eliminado System.Web.dll de Bin Frolder de mi sitio.
fuente
Tuve este problema, configurar la copia local activada y desactivada, etc.no funcionó. El proyecto no estaba usando nuget, por lo que las soluciones que estaban fuera de la cuestión también estaban fuera de discusión.
La solución para mí fue instalar MVC 3 (que hice a través del instalador de la plataforma web).
Sospecho que esto se convertirá en una solución más para las personas a medida que el marco .net continúa avanzando y las personas no tienen instalado el material MVC anterior.
fuente
Es probable que configurar su DLL en CopyLocal / true o cualquiera de las otras soluciones importantes para esto solucione su problema, pero aquí hay otro caso extremo que me atrapó durante 20 minutos de tiempo perdido.
Cuando agregue sus espacios de nombres a su Vistas / Web.config, asegúrese de que estén correctamente colocados:
fuente
Ok, muchas personas parecen estar experimentando este problema. Mi problema fue causado por referencias que tenían rutas a las carpetas bin de otros proyectos, o referencias dlls desde carpetas del sistema. El proyecto tenía aproximadamente 6 años y los desarrolladores anteriores habían decidido que esta era la forma en que iban a hacer referencia a sus bibliotecas.
La solución fue revisar cada referencia y verificar las rutas, luego eliminar la referencia y agregarla usando NuGet. Para cualquier paquete que no estuviera en NuGet, creé otra carpeta junto con los paquetes y puse el dll allí en el mismo diseño que lo haría NuGet.
También tuve que revisar los archivos de configuración y asegurarme de que se estaba utilizando la versión correcta de los paquetes. ¡Un proceso largo y doloroso!
fuente
Tengo un proyecto que hace esto cada vez que construyo con la Vista abierta. Tan pronto como cerré la vista, el error desaparece y la compilación tiene éxito. Muy extraño.
fuente
Tuve el mismo problema, ninguna de las soluciones funcionó para mí, finalmente eliminé la
System.Web.MVC
y agregué nuevamente. Luego todo volvió a la normalidad y mi problema se resolvió.fuente