Le nom du type ou du namespace n'existe pas dans le système namespace .Web.Mvc'

la solution MVC3 de buying s'est bien passée mais a fait une erreur dans le navigateur:

message d'erreur du compilateur: CS0234: le type ou le nom d'espace de noms 'Html' n'existe pas dans le système d'espace de noms.Web.Mvc' (avez-vous perdu une référence d'assemblage?)

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

j'ai installé des paquets pour la solution avec NuGet et mis en place pour tous les projets MVC3 . Est-ce que MVC3 inclut les bibliothèques System.Web.Mvc.Ajax , System.Web.Mvc.Html et autres? Pourquoi j'obtiens l'erreur?


dans le dossier Références, j'ai système.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 le Système de.Web.Mvc espace de noms

fichier 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>
209
demandé sur J.Olufsen 2012-06-17 16:46:41

21 réponses

Nettoyez votre solution et définissez la propriété de ces fichiers à Copy Local = True .

pour définir la propriété locale de la copie à True ou False

dans Solution Explorer, cliquez sur le bouton Afficher tous les fichiers pour afficher le noeud de références.

  • ouvrir le noeud de références pour le projet.
  • faites un clic droit sur une référence dans la liste de références et cliquez Propriétés. Les propriétés associées à ce référence apparaissent dans une liste dans la fenêtre des Propriétés.
  • dans la fenêtre Propriétés, changez la propriété locale de copie en True ou False.
417
répondu Toffee 2015-10-23 09:25:52

pour quelque raison que ce soit, deux de mes solutions ont des projets web qui se désinstallent spontanément asp.net MVC en quelque sorte. Je l'ai installé à partir de Nuget et maintenant ils fonctionnent tous les deux à nouveau. Cela s'est produit après un lot récent de mises à jour de windows qui incluaient .net framework updates pour la version que j'utilisais (4.5.1).

Edit: a Partir de la .Net Développement Web et des Outils de Blog:

Microsoft Asp.Net MVC Security Update MS14-059 a cassé ma carrure!

60
répondu Chris 2014-10-20 12:43:19

celui-ci me rattrape normalement quand je cours à partir de IIS et l'application pool pour le site par défaut est défini à .NET version 2.0. Lorsque vous utilisez IIS de visual studio, il crée un répertoire virtuel, mais fonctionne toujours sous le pool d'applications du site par défaut. Si vous utilisez le serveur web build in, faites un clic droit sur votre projet web, allez dans Propriétés et assurez-vous que vous l'exécutez sous la bonne version de.NET. Sur IIS, vérifiez la version .NET sur votre pool d'applications.

suite à mon dernier commentaire sur la façon dont le projet a été créé - est-ce que vous incluez correctement les assemblages, comme ci-dessous (tiré du web par défaut.fichier de configuration généré par le modèle de projet MVC3 dans 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>
38
répondu BlackSpy 2015-12-10 12:52:37

vous devez mettre à jour MVC.

  1. allez à outils - > NuGet Package Manager - > Manage NuGet Packages for Solution
  2. cliquez sur "Mises à jour "
  3. mise à jour" Microsoft ASP.NET MVC "
  4. Solution De Reconstruction
29
répondu Matt 2014-11-07 19:31:31

j'ai eu le même problème mon scénario, j'étais référencement du nouveau Système.Web.Mvc.dll à partir d'un dossier lib et je n'ai pas eu "copie locale" mis à vrai. L'application était alors en train de revenir à la version dans le GAC qui n'avait pas les espaces de noms corrects (Html, Ajax etc) et me donnait l'erreur de temps d'exécution.

28
répondu Peter Munnings 2012-10-29 12:55:58

ma solution était sous Gérer les paquets Nuget pour Solution... -- j'ai eu umpteen mises à jour à faire pour pas mal de paquets.

laissez-moi revenir en arrière d'un demi-pas et dire que je me suis trompé parce que j'ai déplacé la solution et les projets d'un dossier à l'autre... les choses étaient donc déjà hors de contrôle par rapport à l'endroit où les projets pensaient que les choses seraient. Tout s'est très bien passé, mais apparemment Nuget devient confus sauf si vous utilisez un approche différente de celle que j'ai fait.

retour à la solution... Je suis simplement allé à Gérer les paquets Nuget pour Solution... >> Mises à jour >> Microsoft et .NET et appuyez sur la bouton Tout mettre à Jour .

tout était redevenu normal et heureux.

16
répondu azarc3 2014-10-18 15:06:39

j'ai téléchargé un projet mvc 5 et la question incriminée pointant à

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

avec ce message d'erreur:

CS0234: The type or namespace name 'Ajax' does not exist in the namespace 'System.Web.Mvc' (are you missing an assembly reference?)

-- > dans lequel je suis venu à cette page Web et ai essayé un nettoyage et quelques choses ci-dessus, etc...

ce qui a fonctionné pour moi était juste à

Manage Nuget and Update all the packages.  Then it worked fine.
9
répondu Tom Stickel 2014-10-24 03:48:48

cette réponse est un peu tardive compte tenu de la date de la question, mais quelqu'un pourrait la trouver utile.

aucune des solutions ci-dessus n'a fonctionné pour moi Dans Visual Studio 2012 sur un projet local, NET Framework 4.5 MVC 4. Pour le contexte, je suivais un tutoriel sur la création D'une Api Web barebones sur CodeProject ( http://www.codeproject.com/Articles/615805/Creating-a-Clean-Minimal-Footprint-ASP-NET-WebAPI ) quand j'ai rencontré ce problème.

Ce qui a fonctionné pour moi était d'ajouter explicitement "système.Web.Mvc" à ma demande de références, même si l'application a déjà fait référence "du Système.Web."

6
répondu Sean 2014-03-06 21:19:23

exécuter la commande suivante dans le gestionnaire de paquets nuget l'a corrigé pour moi:

update-package microsoft.aspnet.mvc -reinstall
6
répondu user1477388 2015-10-13 14:55:47

j'ai eu le même problème, mais aucune de ces fonctionné pour moi. Ils ont fait de me mettre dans la bonne direction.

par exemple quand je mets" copie locale "à" true " pour le système.Web.Référence Mvc, il renvoie automatiquement à False.

j'ai plusieurs projets qui dépendent du Système.Web.Mvc référence dans ma solution, mais un seul a causé ce problème. Dans VS 2012 cette référence est marquée avec le triangle d'attention jaune.

Trouver cette référence => supprimer => re-l'ajouter en

qui l'a réparé pour moi. Espérons que cette aide

4
répondu bohem.be 2015-08-05 08:26:46

voir et vérifier les chemins de référence dans votre csproj.

j'avais supprimé les références au Système.Web.Mvc (et d'autres) et les a lus à un chemin personnalisé. C:\Project\OurWebReferences

cependant, après avoir fait cela, le chemin de référence dans le csproj toujours n'a pas changé. Était

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

modifié à la main

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

ne sont qu'un exemple.

3
répondu Valamas 2015-09-24 21:08:14

pour moi, la solution était de s'assurer que tous les projets étaient construits pour le même CPU - dans mon cas x86

3
répondu Rob Bowman 2015-11-03 19:46:40

copie locale = True a été résoudre pour un de mes projets. Mais dans un autre projet, j'obtiens la même erreur, j'ai essayé de définir Copy Local = true, mais cela ne résout pas mon problème. Le fait de faire passer le cadre cible de 4.5.1 à 4.5 dans les propriétés du projet a contribué à cette situation.

2
répondu Andrey Mykhaylov 2014-11-10 13:31:51

j'ai fait quelque chose de vraiment stupide (et peut-être que toi aussi).

j'essayais d'appeler System.Web.Mvc.Html.Partial("<Partial Page>")

Système

.Web.Mvc.Html est un namespace et pas une classe et je n'ai pas très bien lu mon message d'erreur, donc j'ai interprété mon erreur comme la classe Html n'existe pas dans le système namespace.Web.Mvc et c'est comme ça que j'ai fini ici (stupide je sais).

Tout ce que j'avais à faire était d'ajouter une utilisation @using System.Web.Mvc.Html à mon la page puis @Html.Partial a fonctionné comme prévu.

2
répondu Jared Beach 2018-08-31 15:26:52

si l'un de ci-dessus ne résout pas votre problème il suffit de définir les propriétés du système.Web.Mvc.dll pour copier la loi locale.

il résout

1
répondu Ramakrishna 2014-10-30 10:38:40

j'ai eu le même problème, mais dans mon cas, était à l'origine par un autre facteur. J'écris ceci pour aider d'autres personnes avec le même problème. J'ai des solutions avec plusieurs projets. deux d'entre eux travaillent avec le système.Web.Mvc, Normalement notre référence pointait vers des paquets externes où nous contrôlions la version utilisée. Pour une raison quelconque, une des références du projet va à GAC et pointe vers la dll GAC (version 4.0.0.1) et le programme a obtenu l'erreur. Pour la corriger:

Vérifier simplement si les références au système.Web.Mvc pointer vers la même dll dans le même chemin de répertoire.

j'espère que ça aidera.

1
répondu freedeveloper 2014-12-29 15:47:16

J'ai supprimé le système.Web.dll de Bin frolder de mon site.

1
répondu andre719mv 2015-09-30 07:45:05

j'ai eu ce problème, le réglage de la copie locale on et off etc n'a pas fonctionné. Le projet n'utilisait pas nuget donc des corrections autour de ce qui étaient hors de question également.

la solution pour moi était d'installer MVC 3 (ce que j'ai fait à travers l'installateur de plate-forme web).

je soupçonne que cela deviendra plus d'une solution pour les gens que le .net cadre continue d'avancer et les gens n'ont pas les choses plus anciennes MVC installé.

1
répondu 4imble 2016-03-31 13:56:21

il est probable que le réglage de votre DLL à CopyLocal/vrai ou l'un des autres correctifs majeurs pour cela va corriger votre problème, mais voici un autre edge-case qui m'a pris pour 20 minutes de temps perdu.

lorsque vous ajoutez vos namespaces à vos vues/Web.config, assurez-vous qu'ils sont correctement casés:

  <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>
1
répondu Moby's Stunt Double 2016-09-15 14:00:32

Ok donc beaucoup de gens semblent éprouver ce problème. Mon problème a été causé par des références ayant des chemins vers les dossiers bin d'autres projets, ou faisant référence aux dlls des dossiers système. Le projet avait environ 6 ans et les développeurs précédents avaient décidé que c'était la façon dont ils allaient référencer leurs bibliothèques.

la solution était de passer en revue chaque référence et de vérifier les chemins, puis de supprimer la référence et de L'ajouter en utilisant NuGet. Pour tout paquet qui n'était pas sur NuGet j'ai créé un autre dossier à côté des paquets et y ai mis la dll dans la même mise en page que NuGet le ferait.

j'ai aussi dû parcourir les fichiers de configuration et m'assurer que la version correcte des paquets était utilisée. Un processus long et douloureux!

1
répondu John 2018-05-29 14:15:04

j'ai eu le même problème, aucune des solutions n'a fonctionné pour moi, finalement j'ai enlevé le System.Web.MVC et ai ajouté à nouveau alors tout était de retour à la normale et mon problème résolu.

0
répondu Sirwan Afifi 2015-08-30 15:23:06