218 votes

Le type ou le nom de l'espace de noms n'existe pas dans l'espace de noms 'System.Web.Mvc'

La construction de la solution MVC3 s'est bien déroulée mais j'ai 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' (avez-vous oublié une référence à l'assembly?)

Erreur de source:
Ligne 25:         
Ligne 26:         
Ligne 27:         
Ligne 28:         
Ligne 29:         

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


Dans le dossier References, j'ai System.Web.Mvc

Version d'exécution : v4.0.30319,

Version : 3.0.0.0

Web.config

MSDN l'espace de noms System.Web.Mvc

fichier packages.config:

1 votes

Quel est votre serveur web? Est-ce que c'est IIS?

0 votes

Exprimez-IIS dans Visual Studio 2012

1 votes

Quelle est la cible de votre projet définie à ?

423voto

Toffee Points 699

Néttoyez 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.

  • Ouvrez le nœud Références pour le projet.
  • Cliquez avec le bouton droit sur une référence dans la liste des Références, puis cliquez sur Propriétés. Les propriétés associées à cette référence apparaissent dans une liste dans la fenêtre Propriétés.
  • Dans la fenêtre Propriétés, changez la propriété Copy Local en True ou False.

11 votes

Génial! Cela a corrigé mon problème sur un projet MVC4. C'est un peu évident quand on y pense. Je n'ai jamais vérifié sur le projet déployé pour voir si les DLL étaient là.

1 votes

Merci! Cela m'a aussi aidé!

1 votes

Tu es le bienvenue. Parfois, des problèmes complexes sont résolus par une solution simple. :)

60voto

Chris Points 3508

Pour une raison quelconque, DEUX de mes solutions ont en projet web 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 à nouveau. Cela s'est produit après une récente série de mises à jour de Windows qui incluaient des mises à jour du framework .NET pour la version que j'utilisais (4.5.1).

Éditer : Depuis le blog .Net Web Development and Tools de Microsoft :

Mise à jour de sécurité Microsoft Asp.Net MVC MS14-059 a cassé ma build !

4 votes

Cela vient de m'arriver. Cependant, j'ai mis à jour mes packages MVC plutôt que de les réinstaller (les miens étaient de toute façon obsolètes). Y a-t-il une source ou une raison pour laquelle cela s'est produit?

5 votes

Cela semble être lié à KB2994379 ou KB2992080, en fonction de la version de MVC à laquelle vous faites référence (respectivement 5.1 et 5.0). La mise à jour apporte une nouvelle version de System.Web.Mvc qui, je présume, introduit un conflit de version. Mettre à jour votre package MVC résoudra l'erreur. Si vous ne pouvez pas mettre à jour pour une raison quelconque, vous devrez définir le fichier System.Web.Mvc.dll pour qu'il soit copié localement.

2 votes

J'ai eu le même problème. Mettez à jour le package et définissez copy local = true. Merci à tous !!!!

38voto

BlackSpy Points 2547

Cela me prend normalement lorsque je cours à partir de IIS et que le pool d'applications pour le site par défaut est configuré sur la version .NET 2.0. Lorsque vous utilisez IIS à partir de Visual Studio, cela 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é, cliquez avec le bouton droit sur votre projet web, allez dans les propriétés et assurez-vous que vous l'exécutez 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 assemblages, comme ci-dessous (issu du fichier web.config par défaut généré par le modèle de projet MVC3 dans VS10) :

2 votes

Tous les projets sont configurés pour utiliser .NET Framework 4.5. Est-ce que cela signifie que .NET 4.5 ne peut pas trouver System.Web.Mvc.Ajax et d'autres classes ?

0 votes

Normalement, cela signifie qu'il est configuré pour s'exécuter en tant que 4.5 mais fonctionne en réalité comme autre chose, ce qui signifie qu'il ne peut pas trouver System.Web.Mvc.Ajax dans System.Web.Mvc.

0 votes

En passant, quelle est la version de votre System.Web.dll? La raison pour laquelle je demande est que vous avez dit avoir ajouté les assemblies depuis NuGet - n'avez-vous pas créé un projet web MVC3?

28voto

Peter Munnings Points 1182

J'avais le même problème - mon scénario était que je faisais référence au nouveau System.Web.Mvc.dll depuis un dossier lib et je n'avais pas défini "Copier sur le répertoire de sortie" sur true. L'application revenait alors à la version dans le GAC qui n'avait pas les espaces de noms corrects (Html, Ajax, etc.) et me donnait l'erreur d'exécution.

16voto

azarc3 Points 319

Ma solution était sous Gérer les packages Nuget pour la solution... - j'avais une multitude de mises à jour à faire pour plusieurs packages.

Permettez-moi de reculer d'un demi-pas et de dire que je me suis embrouillé parce que j'ai déplacé la solution et les projets d'un dossier à un autre... donc les choses étaient déjà déréglées par rapport à où les projets pensaient que les choses devaient être. Tout s'est bien déplacé, mais apparemment Nuget devient confus à moins d'utiliser une approche différente de la mienne.

Revenons à la solution... je suis simplement allé à Gérer les packages Nuget pour la solution... >> Mises à jour >> Microsoft et .NET et j'ai appuyé sur le bouton Mettre à jour tout.

Tout était revenu à la normale et content.

0 votes

J'ai posté la même solution par erreur en oubliant votre publication +1 pour vous

0 votes

C'était également la solution pour moi.

0 votes

Notez que vous devrez peut-être également mettre à jour JQuery et Bootstrap après avoir fait cela

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X