J'ai un projet de service de données WCF construit avec Visual Studio 2010, qui fonctionnait bien. Tout à coup, il ne compile plus. Il me donnait des messages comme:
Erreur 7 Le type ou nom de l'espace de noms 'Services' n'existe pas dans l'espace de noms 'System.Data' (il vous manque une référence d'assembly?) C:\U ... s\Visual Studio 2010\Projects ...\DataService. cs ...
Erreur 8 Le type ou le nom d'espace de noms 'Linq' n'existe pas dans l'espace de noms 'Système' (il manque une référence d'assembly?) DependencyResolver.cs 3 14
Erreur 10 Le type ou le nom de l'espace de noms 'Web' n'existe pas dans l'espace de noms 'System.ServiceModel' (il manque une référence d'assembly?)
Erreur 12 Impossible de trouver le type ou le nom de l'espace de noms 'DataService' (il vous manque une directive using ou une référence Assembly?)
Comment puis-je le réparer?
J'ai eu le même problème et j'ai dû définir le "Cadre cible" de tous les projets comme identique. Ensuite, il a bien construit. Dans le menu Projet, cliquez sur Propriétés ProjectName. Cliquez sur l'onglet compiler. Cliquez sur Options de compilation avancées. Dans le cadre cible, choisissez le cadre souhaité.
J'ai eu un problème avec System.Linq n'étant pas reconnu. La déclaration using
avait une ondulation rouge, etc. La façon dont je l'ai résolue consistait à modifier mon site Web afin qu'il cible dotnet 3.5, puis à revenir au framework ciblé d'origine (4.0 dans mon cas).
J'ai constaté que cela est dû au fait que j'ai le même nom d'espace de nom que le nom de classe (MyWorld.MyWorld = Namespace.ClassName
).
Remplacez votre espace de noms par un nom différent de celui de votre classe, ce qui compilera.
J'ai rencontré le même problème avec un site ASP.NET MVC lorsque j'ai essayé d'utiliser LINQ to SQL . J'ai résolu le problème en:
Solution Explorer -> Références -> Cliquez avec le bouton droit sur System.Data.Linq -> Copier en local (True)
Vérifiez que votre infrastructure cible a les mêmes versions .NET. J'ai eu le même problème et ma classe .NET était de 3,5 et la solution Web en avait 4,5. Je les ai synchronisées, puis ça a marché :)
J'ai rencontré le même problème avec System.Data.SQLite. La source du problème est la DLL que vous avez utilisée doit avoir la même version .NET que votre projet.
Par exemple, si vous avez utilisé (dans mon cas) SQLite pour .NET 4.5, votre cible de plate-forme devrait également être .NET 4.5.
Vous pouvez trouver la cible de la plateforme par: Projet> Propriétés (nom du projet)> Construire.
J'ai eu le même problème et essayé tout ce qui précède sans aucun succès, puis j'ai découvert ce que c'était:
J'avais créé un dossier appelé "Système" dans l'un de mes projets, puis créé une classe. Le problème semble provenir d'un espace de noms appelé "Système" lors de la création du fichier .cs, même s'il se trouve dans un espace de noms de "MyProject.System".
En regardant en arrière, je peux comprendre pourquoi cela causerait des problèmes. Cela m'a vraiment étonné au début, car les messages d'erreur ne semblent pas initialement liés au problème.
Dans mon cas, le problème était dû au fait que la classe que j'avais créée avait un espace de nom interférant avec les classes existantes. La nouvelle classe A avait un espace de noms zz.yy.xx (par erreur). Les références aux objets d'un autre espace de noms yy.xx n'étaient pas compilées dans la classe A ou dans d'autres classes dont l'espace de noms était zz.
J'ai changé l'espace de noms de la classe A en yy.xx, ce qui aurait dû être, et cela a commencé à fonctionner.
POUR TOUTE PERSONNE AVEC DES FICHIERS LIÉS: J'ai eu ce problème et utilisais silverlight et le fichier incriminé qui lançait cette erreur était un fichier lié.
L'erreur du compilateur m'a dit que l'erreur se produisait dans le projet dans lequel le fichier vivait. Il s'est avéré que l'erreur n'était PAS dans ce projet, elle se produisait dans le projet contenant le fichier lié. Il manquait une référence à ce projet.
Je fais référence à Microsoft.CommerceServer.Runtime.Orders et ai rencontré cette erreur. Ce projet est ancien et possède le framework Target .NET 2.0. En sortie j'ai eu cette erreur:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework Assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
J'ai simplement changé le framework cible en .NET 4 et maintenant, il est construit.
J'ai rencontré ce problème lors de l'utilisation de l'intégration Git de Visual Studio pour gérer le projet. Pour une raison quelconque, le projet Windows Phone 8 se compilerait parfaitement lorsqu’il s’agissait de cibler x86, mais lorsqu’il était configuré pour cibler ARM, la compilation échouait avec une erreur indiquant que "Publicité" n’existait pas dans l’espace de nommage Microsoft.
J'ai fini par résoudre le problème en supprimant la référence Microsoft.Advertising. *. Dll et en l'ajoutant à nouveau.
Et si tout échoue, par exemple pour vous assurer que les infrastructures cible sont identiques, et que vous traitez avec une bibliothèque de classes WPF dans VS2010, redémarrez simplement Visual Studio. Cela l'a fait pour moi.
Dans mon cas, il n'y a eu aucun changement dans les projets, la compilation s'est arrêtée et avec "le nom de type ou d'espace de nom XXX n'existe pas" et dans la classe à l'origine de la plainte elle-même, intellisense car cet espace de nom/classe XXX fonctionne correctement. Le problème était dans les références en effet!
Étapes pour reproduire:
La solution a ProjectA, ProjectB. ProjectA fait référence à log4net tiers et porte la mention Copy local: true
. ProjectB fait référence à ProjectA et n'a pas de référence à log4net. La solution compile bien.
Modification dans ProjectA: propriété de référence de log4net en Copy local: false
.
This is because ProjectB
la bibliothèque tierce est manquante dans le dossier bin(log4net in my case)!
Dans ce cas, la solution serait -
Copy local: true
ouJ'ai vécu les mêmes erreurs. Après avoir découvert que mon projet avait un nom d'assembly incorrect (j'ai copié des fichiers d'un projet différent et que les espaces de noms étaient un peu confus), je l'ai modifié et le projet a été compilé correctement.
Un message d'erreur très similaire a été provoqué par la duplication accidentelle d'une classe dans un autre projet de ma solution. La suppression de la copie a résolu le problème.
J'ai récemment eu besoin de faire une restauration du système et plusieurs de mes fichiers ont été modifiés/disparaissent sur lesquels je travaillais depuis la restauration. Certains d'entre eux étaient des fichiers DLL. J'ai utilisé le contrôle de code source pour récupérer l'intégralité du projet, mais le problème était le même que ci-dessus. J'ai trouvé cette réponse celle décrite vous devrez peut-être supprimer un DLL et l'a relue pour corriger vos erreurs. C'était le cas dans mon scénario.
Le retrait de WebMatrix.WebData
et sa lecture ainsi que l'ajout de WebMatrix.Data
ont corrigé mon erreur de The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ...
.