La solution Buiding MVC3 s'est bien passée mais a une erreur dans le navigateur:
Message d'erreur du compilateur: CS0234: le nom de type ou d'espace de noms «Html» n'existe pas dans l'espace de noms «System.Web.Mvc» (vous manque une référence d'assembly?)
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 configuré pour tous les projets MVC3
. Est-ce que MVC3
comprennent les bibliothèques System.Web.Mvc.Ajax
, System.Web.Mvc.Html
et d' autres? Pourquoi est-ce que j'obtiens l'erreur?
Dans le dossier Références, j'ai 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 l'espace de noms System.Web.Mvc
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>
c#
asp.net-mvc-3
J.Olufsen
la source
la source
System.Web.MVC
pas copié dans lebin
dossier depuis MS14-059Réponses:
Nettoyez votre solution, puis définissez la propriété de ces fichiers sur
Copy Local = True
.Pour définir la propriété Copy Local sur True ou False
Dans l'Explorateur de solutions, cliquez sur le bouton Afficher tous les fichiers pour afficher le nœud Références.
la source
System.Web.Mvc
Pour une raison quelconque, DEUX de mes solutions ont des projets Web qui ont désinstallé spontanément asp.net MVC d'une manière ou d'une autre. Je l'ai installé depuis Nuget et maintenant ils fonctionnent tous les deux à nouveau. Cela s'est produit après un récent lot de mises à jour Windows qui comprenait des mises à jour du framework .net pour la version que j'utilisais (4.5.1).
Modifier: à partir du blog de développement et d'outils Web .Net:
La mise à jour de sécurité Microsoft Asp.Net MVC MS14-059 a cassé ma version!
la source
Celui-ci m'attrape normalement lorsque j'exécute à partir d'IIS et que le pool d'applications pour le site par défaut est défini sur .NET version 2.0. Lorsque vous utilisez IIS à partir de Visual Studio, il crée un répertoire virtuel mais s'exécute toujours sous le pool d'applications du site par défaut. Si vous utilisez le serveur Web intégré, faites un clic droit sur votre projet Web, accédez aux propriétés et assurez-vous de l'exécuter sous la bonne version de .NET. Sur IIS, vérifiez la version .NET de votre pool d'applications.
Suite à mon dernier commentaire sur la façon dont le projet a été créé - incluez-vous correctement les assemblys, comme ci-dessous (extrait du fichier web.config par défaut généré par le modèle de projet MVC3 dans VS10):
la source
Vous devez mettre à jour MVC.
la source
J'ai eu le même problème - mon scénario était que je référençais le nouveau System.Web.Mvc.dll à partir d'un dossier lib et je n'avais pas "Copy Local" défini sur true. L'application revenait alors à la version du GAC qui n'avait pas les bons espaces de noms (Html, Ajax, etc.) et me donnait l'erreur d'exécution.
la source
Ma solution était sous Gérer les paquets Nuget pour la solution ... - J'avais énormément de mises à jour à faire pour pas mal de paquets.
Permettez-moi de reculer d'un demi-pas et de dire que je me suis foutu parce que j'ai déplacé la solution et les projets d'un dossier à un autre ... donc les choses étaient déjà hors de contrôle par rapport à ce que les projets pensaient. Tout s'est bien passé, mais apparemment Nuget devient confus à moins que vous n'utilisiez une approche différente de la mienne.
Retour à la solution ... Je suis simplement allé à Gérer les packages Nuget pour la solution ... >> Mises à jour >> Microsoft et .NET et appuyez sur le bouton Tout mettre à jour .
Tout était revenu à la normale et heureux.
la source
J'ai téléchargé un projet mvc 5 et le problème incriminé pointant vers
Avec ce message d'erreur:
-> dans lequel je suis venu sur cette page Web et j'ai essayé un nettoyage et quelques choses ci-dessus, etc.
Ce qui a fonctionné pour moi, c'était
la source
L'exécution de la commande suivante dans le gestionnaire de packages nuget l'a corrigé pour moi:
la source
Cette réponse est assez tardive compte tenu de la date de la question, mais quelqu'un peut 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 / Création-d'une-empreinte minimale propre-ASP-NET-WebAPI ) lorsque j'ai rencontré ce problème.
Ce qui a fonctionné pour moi a été d'ajouter explicitement "System.Web.Mvc" aux références de mon application, même si l'application faisait déjà référence à "System.Web".
la source
J'ai eu le même problème, mais rien de ce qui précède n'a fonctionné pour moi. Ils m'ont cependant mis dans la bonne direction.
Par exemple, lorsque je définit la valeur "Copier local" sur "true" pour la référence System.Web.Mvc, elle la redéfinit automatiquement sur False.
J'ai plusieurs projets qui dépendent de la référence System.Web.Mvc dans ma solution, mais un seul a causé ce problème. Dans VS 2012, cette référence est étiquetée avec le triangle d'attention jaune.
Trouvez cette référence => supprimez-la => rajoutez-la
Cela m'a arrangé. J'espère que cela t'aides
la source
Affichez et vérifiez les chemins de référence dans votre csproj.
J'avais supprimé les références à System.Web.Mvc (et autres) et les ai ajoutées à un chemin personnalisé.
C:\Project\OurWebReferences
Cependant, après cela, le chemin de référence dans le csproj fixe n'a pas changé. ÉTAIT
Modifié en manuellement
Les chemins ne sont qu'un exemple.
la source
Pour moi, la solution était de s'assurer que tous les projets étaient construits pour le même CPU - dans mon cas x86
la source
Copier Local = True a été résolu pour l'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. Modification du cadre cible de 4.5.1 à 4.5 dans les propriétés du projet
la source
J'ai fait quelque chose de vraiment stupide (et vous l'avez peut-être fait aussi).
J'essayais d'appeler
System.Web.Mvc.Html.Partial("<Partial Page>")
System.Web.Mvc.Html est un espace de noms et non une classe et je n'ai pas si bien lu mon message d'erreur, j'ai donc interprété mon erreur car la classe
Html
n'existe pas dans l'espace de noms System.Web.Mvc et c'est ainsi que j'ai fini ici (stupide je sais).Tout ce que j'avais à faire était d'ajouter une instruction using
@using System.Web.Mvc.Html
à ma page, puis de@Html.Partial
travailler comme prévu.la source
si l'un des éléments ci-dessus ne résout pas votre problème, définissez simplement les propriétés de System.Web.Mvc.dll pour copier la ture locale.
ça résoudra
la source
J'ai eu le même problème, mais dans mon cas, cela provenait d'un autre facteur. J'écris ceci pour aider d'autres personnes ayant le même problème. J'ai des solutions avec plusieurs projets. deux d'entre eux fonctionnent avec System.Web.Mvc, normalement notre référence pointait vers des packages externes où nous contrôlions la version utilisée. Pour une raison quelconque, l'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 le corriger:
Vérification simple si les références à System.Web.Mvc pointent vers la même DLL dans le même chemin de répertoire.
J'espère que cette aide.
la source
J'ai supprimé System.Web.dll du dossier Bin de mon site.
la source
J'ai eu ce problème, mettre la copie locale sous et hors tension, etc. n'a pas fonctionné. Le projet n'utilisait pas de pépite, il était donc également impossible de corriger les problèmes.
La solution pour moi était d'installer MVC 3 (ce que j'ai fait via le programme d'installation de la plate-forme Web).
Je soupçonne que cela deviendra plus une solution pour les gens à mesure que le cadre .net continue de progresser et que les anciens MVC ne sont pas installés.
la source
Il est probable que définir votre DLL sur CopyLocal / true ou l'un des autres principaux correctifs pour cela résoudra votre problème, mais voici un autre cas de bord qui m'a pris pendant 20 minutes de temps perdu.
Lorsque vous ajoutez vos espaces de noms à votre Views / Web.config, assurez-vous qu'ils sont correctement placés dans le casse:
la source
Ok donc beaucoup de gens semblent rencontrer 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 par le référencement de DLL à partir de dossiers système. Le projet avait environ 6 ans et les développeurs précédents avaient décidé que c'était ainsi qu'ils allaient référencer leurs bibliothèques.
La solution consistait à parcourir chaque référence et à vérifier les chemins, puis à supprimer la référence et à l'ajouter à l'aide de NuGet. Pour tout package qui n'était pas sur NuGet, j'ai créé un autre dossier à côté des packages et y ai placé la DLL dans la même disposition que NuGet.
J'ai également dû parcourir les fichiers de configuration et m'assurer que la bonne version des packages était utilisée. Un processus long et douloureux!
la source
J'ai un projet qui le fait chaque fois que je crée avec la vue ouverte. Dès que j'ai fermé la vue, l'erreur disparaît et la construction réussit. Très étrange.
la source
J'ai eu le même problème, aucune des solutions n'a fonctionné pour moi, enfin j'ai supprimé le
System.Web.MVC
et ajouté à nouveau Ensuite, tout est revenu à la normale et mon problème a été résolu.la source