tutorial - mvc c# windows forms
El tipo o el nombre del espacio de nombres no existe en el espacio de nombres ''System.Web.Mvc'' (21)
Copiar Local = Verdadero fue resolver para uno de mis proyectos. Pero en otro proyecto, recibí el mismo error, intenté establecer Copiar Local = verdadero, pero no resolvió mi problema. Cambiando el marco de destino de 4.5.1 a 4.5 en Propiedades del proyecto Ayudé con esto.
La solución Buiding MVC3 funcionó bien, pero se produjo 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" />
Instalé paquetes para la solución con NuGet
y configuré todos los proyectos MVC3
. ¿ MVC3
bibliotecas System.Web.Mvc.Ajax
, System.Web.Mvc.Html
y otras? ¿Por qué me da el error?
En la carpeta Referencias, 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>
Descargué un proyecto de mvc 5 y el problema ofensivo que apunta a
<add namespace="System.Web.Mvc.Ajax" />
Con este mensaje de error:
CS0234: The type or namespace name ''Ajax'' does not exist in the namespace ''System.Web.Mvc'' (are you missing an assembly reference?)
-> en el que vine a esta página e intenté una limpieza y algunas cosas arriba, etc ...
Lo que funcionó para mí fue solo para
Manage Nuget and Update all the packages. Then it worked fine.
Ejecutar el siguiente comando en el gestor de paquetes nuget lo arreglé para mí:
update-package microsoft.aspnet.mvc -reinstall
Es probable que la configuración de su DLL en CopyLocal / true o cualquiera de las otras correcciones importantes para esto solucione su problema, pero aquí hay otro caso límite que me atrapó durante 20 minutos de tiempo perdido.
Cuando agregue sus espacios de nombres a su Views / Web.config, asegúrese de que estén correctamente encajonados:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="THE.NameSpace" />
<add namespace="THE.Namespace" />
</namespaces>
</pages>
</system.web.webPages.razor>
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. En este contexto, estaba siguiendo un tutorial sobre cómo crear una Web Api de barebones en CodeProject ( http://www.codeproject.com/Articles/615805/Creating-a-Clean-Minimal-Footprint-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, aunque la aplicación ya hizo referencia a "System.Web".
Este normalmente me atrapa cuando ejecuto desde IIS y el grupo de aplicaciones para el sitio predeterminado está configurado para .NET versión 2.0. Cuando se usa IIS desde Visual Studio, se 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 con el botón derecho en su proyecto web, vaya a Propiedades y asegúrese de ejecutarlo bajo la versión correcta de .NET. En IIS, compruebe la versión .NET en su grupo de aplicaciones.
A raíz de mi último comentario sobre cómo se creó el proyecto, ¿está correctamente incluyendo los ensamblados, como se muestra a continuación (tomado del archivo web.config predeterminado generado por la plantilla de proyecto MVC3 en VS10):
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
He eliminado System.Web.dll de Bin frolder de mi sitio.
Hice algo realmente estúpido (y tal vez tú también lo hiciste).
Estaba intentando llamar a 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 Acabé aquí (estupido lo sé).
Todo lo que tenía que 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.
Limpie su solución y luego establezca la propiedad de esos archivos en Copy Local = True
.
Para establecer la propiedad Copia 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.
- Abra el nodo Referencias para el proyecto.
- Haga clic derecho en una referencia en la lista de Referencias, y haga clic en Propiedades. Las propiedades asociadas con esa referencia aparecen en una lista en la ventana Propiedades.
- En la ventana Propiedades, cambie la propiedad Copiar local a Verdadero o Falso.
Mi solución se encontraba en Administrar paquetes de Nuget para la solución ... Tenía varias actualizaciones que hacer para bastantes paquetes.
Permítame 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 lugar en comparación con lo que los proyectos pensaron que serían. Todo se movió muy bien, pero al parecer Nuget se confunde a menos que uses un enfoque diferente al que yo hice.
Volver a la solución ... Simplemente fui a Administrar paquetes de Nuget para la solución ... >> Actualizaciones >> Microsoft y .NET y presioné el botón Actualizar todo .
Todo volvió a la normalidad y feliz.
Ok, mucha gente parece estar experimentando este problema. Mi problema fue causado por las referencias que tienen rutas a las carpetas bin de otros proyectos, o por hacer referencia a archivos DLL de las 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 todas las referencias y verificar las rutas, luego eliminar la referencia y agregarla con NuGet. Para cualquier paquete que no estuviera en NuGet, creé otra carpeta junto con los paquetes y coloqué la dll allí en el mismo diseño que 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!
Para mí, la solución fue asegurar que todos los proyectos se estaban construyendo para la misma CPU, en mi caso x86
Por el motivo que sea, DOS de mis soluciones tienen proyectos web que de forma espontánea desinstaló asp.net MVC. Lo instalé desde Nuget y ahora ambos funcionan 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).
Edición: Desde el blog de herramientas y desarrollo web .Net:
Microsoft Asp.Net MVC Security Update MS14-059 rompió mi compilación!
Si alguno de los anteriores no resuelve su problema, simplemente configure las propiedades de System.Web.Mvc.dll para copiar el archivo local.
se resolverá
Tuve el mismo problema, ninguna de las soluciones funcionó para mí. Finalmente, System.Web.MVC
y volví a agregar. Luego todo volvió a la normalidad y mi problema se resolvió.
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 soluciones con multiples proyectos. dos de ellos trabajan con System.Web.Mvc, normalmente nuestra referencia apuntaba a paquetes externos donde controlamos la versión usada. 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:
Simplemente verifique si las referencias a System.Web.Mvc apuntan a la misma dll en la misma ruta del directorio.
Espero que te ayude.
Tuve el mismo problema, pero ninguno de los anteriores me funcionó. Sin embargo, me pusieron en la dirección correcta.
Por ejemplo, cuando configuro "Copiar Local" en "verdadero" para la referencia de System.Web.Mvc, automáticamente lo vuelve a establecer en Falso.
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.
Encontrar esta referencia => eliminarla => volver a agregarla
Eso lo arregló para mí. Espero que esto ayude
Tuve el mismo problema: mi situación era que estaba haciendo referencia al nuevo System.Web.Mvc.dll desde una carpeta lib y no tenía el valor "Copiar local" en verdadero. La aplicación volvió 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.
Tuve este problema, configurar la copia local de encendido y apagado, etc. no funcionó. El proyecto no estaba usando nuget, por lo que las correcciones que estaban fuera de cuestión también estaban fuera de discusión.
La solución para mí fue instalar MVC 3 (lo 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úe avanzando y las personas no tengan las cosas antiguas de MVC instaladas.
Ver y comprobar las rutas de referencia en su csproj.
Había eliminado las referencias a System.Web.Mvc (y otras) y las había vuelto a escribir en 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
<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>../../../../OurWebProject/bin/Debug/System.Web.Mvc.dll</HintPath>
</Reference>
Cambiado a manualmente
<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>../../../../OurWebReferences/System.Web.Mvc.dll</HintPath>
</Reference>
Las rutas son solo un ejemplo.
Necesitas actualizar MVC.
- Vaya a Herramientas -> NuGet Package Manager -> Administrar paquetes de NuGet para la solución
- Haga clic en "Actualizaciones"
- Actualizar "Microsoft ASP.NET MVC"
- Solución de reconstrucción