web-dev-qa-db-fra.com

Pourquoi ne puis-je pas faire référence à System.ComponentModel.DataAnnotations?

J'essaie d'utiliser DataAnnotations dans mon projet WPF pour spécifier une longueur maximale de chaînes, avec les éléments suivants:

using System.ComponentModel.DataAnnotations;

Cependant, j'ai l'erreur

Le nom de type ou d'espace de nom 'DataAnnotations' n'existe pas dans l'espace de nom 'System.ComponentModel' (il manque une référence d'assembly?)

J'ai vu d'autres exemples où DataAnnotationsexiste existe dans cet espace de noms. J'utilise C # 4. Y a-t-il une raison pour laquelle je ne peux pas l'utiliser? Que puis-je faire pour le réparer?

83
DaveDev

Vous devez référencer l'Assemblée dans laquelle cet espace de noms est défini (il n'est pas référencé par défaut dans les modèles de Visual Studio). Ouvrez votre gestionnaire de références et ajoutez une référence à l'assembly System.ComponentModel.DataAnnotations (Explorateur de solutions -> Ajouter une référence -> Sélectionnez l'onglet .Net -> sélectionnez System.ComponentModel.DataAnnotations dans la liste).

147
Hari

Pour référencer System.ComponentModel.DataAnnotations

Dans un fichier de code à utiliser à l'aide de System.ComponentModel.DataAnnotations; en haut du fichier tels que:

using System.ComponentModel.DataAnnotations;

Ajoutez une référence .NET à votre projet en cliquant avec le bouton droit de la souris dans l'explorateur de solutions:

enter image description here

J'espère que cela t'aides! Cette question m'a aidé.

9
Catto

J'ai également eu le même problème et j'ai résolu le problème en ajoutant la référence dans l'un de mes projets sans la référence mentionnée. Si vous avez 2 ou 3 projets dans votre solution, vérifiez en ajoutant cette référence aux autres projets.

4
Ashish Sahu

Si vous ne l'avez pas dans les références (comme je ne l'ai pas fait), vous pouvez également ajouter le NuGet System.ComponentModel.Annotations pour obtenir les assemblys et résoudre les erreurs. (En l'ajoutant ici car cette réponse reste en haut de Google pour l'erreur)

4
Rodger

J'ai constaté que je ne pouvais pas faire référence à System.ComponentModel.DataAnnotations à partir de Silverlight 5 avec la version ci-dessous à l'adresse (1). J'ai constaté que les assemblys Silverlight 5 ne pouvaient pas utiliser d'assemblages .NET, cela donne l'erreur "Vous ne pouvez pas ajouter de référence à System.ComponentModel.DataAnnotations car elle n'a pas été construite avec le moteur d'exécution Silverlight. ..." J'espère installer le package Silverlight 5 disponible en (2) ci-dessous. Si cela échoue, je mettrai à jour ce post.

[UPDATE: il a échoué. J'ai installé tout ce qui concerne Silverlight 5 et je n'ai pas la version Silverlight du .dll Assembly System.ComponentModel.DataAnnotations. Dommage. UPDATE II: j'ai trouvé un ancien fichier .dll portant ce nom, provenant d'une installation antérieure du kit de développement Silverlight pour Visual Studio 2008 ou 2010. J'ai ajouté ce fichier et il semble fonctionner, en ce sens qu'IntelliSense reconnaît désormais les attributs des membres de la classe, comme [Display(Name = "My Property Name")]. Si cela fonctionne ou non pour tout le reste de ce fichier .dll, je ne le sais pas.]

(1)

Microsoft Visual Studio Professional 2013
Version 12.0.21005.1 REL
Microsoft .NET Framework
Version 4.5.51641

Version installée: Professional

(2) http://go.Microsoft.com/fwlink/?LinkId=229318

2
PaulDecember

Utilisez FrameWork version 4.5 et ultérieure pour votre projet, puis résolvez le problème.Parce que cet espace de noms est situé sous 4.5 et au-dessus.

2
user2090762

J'ai cherché de l'aide sur ce sujet car je suis tombé sur le même problème.

Bien que les réponses suivantes ne soient peut-être pas la réponse à la question posée à l'origine en 2012, cela pourrait constituer une solution pour ceux qui rencontrent ce fil.

n moyen pour résoudre ceci est de vérifier où se trouve votre projet dans la solution. Il se trouve que pour mon instance (j'essayais d'installer un package NuGet, mais ce ne serait pas le cas et l'erreur répertoriée s'afficherait), mon fichier de projet n'était pas inclus dans le répertoire de la solution, bien qu'il apparaisse dans l'explorateur de la solution. J'ai supprimé le projet hors du répertoire et ré-ajouté le projet, mais cette fois à l'emplacement correct.

1

Si vous avez essayé de mettre à jour visual studio de vs2008 à vs2010. Et votre application utilise le framework 3.5 (et vous ne voulez pas le mettre à niveau), et a également utilisé BETF RIA Services WCF ... J'ai de mauvaises nouvelles ... vous DEVEZ mettre à niveau vers WCF RIA Services v1 (BETA ne fonctionne pas sur vs2010 ) ... et pour cette raison ... vous devez également installer Silverlight 4 + - Mise à niveau vers Framework 4.0

Voir ceci: http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html

0
Fernando Torres
This error occurs when the reference to the "System.dll" got removed.Solution to the problem is very simple add the reference to "System.dll".The dll is normally available in the following location
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" .Add the reference your problem will get solved .
0
Ankit Agrawal

System.ComponentModel.DataAnnotations est contenu dans son propre assemblage, vous devez donc vous assurer qu'il est référencé. Tout simplement:

1). Faites un clic droit sur Soloution et choisissez Ajouter.

2) Choisissez référence dans la liste.

3) Recherchez "System.ComponentModel.DataAnnotation", cochez la case à gauche et appuyez sur ok.

Travail effectué, ne devrait pas avoir d'erreurs de référence.

0

J'ai aussi ce problème. C'est très stupide quand j'ajoute un espace de noms identique avec System. J'essaie de supprimer toutes les références, mais ce n'est pas résolu. J'utilise "global :: System.ComponentModel", cela fonctionne aussi. Lorsque je supprime mon espace de noms, ce problème a été résolu.

0
Henry

Je suis passé de Silverlight 4 à Silverlight 5, puis je rencontrais ce problème. Bien que j'avais une référence à "System.ComponentModel.DataAnnotations" sous "Références" dans mon projet, elle comportait un signe de rendement jaune qui indiquait que l'assembly précédemment référencé était introuvable. Il s'est avéré que les propriétés de la référence "System.ComponentModel.DataAnnotations" indiquaient "Version spécifique = True". Lorsque je l'ai remplacé par "Version spécifique = False", le problème a été résolu. Cliquez avec le bouton droit sur l'assembly "System.ComponentModel.DataAnnotations" sous "Références" et sélectionnez "Propriétés" dans le menu contextuel. Vérifiez que la valeur de la propriété pour "Version spécifique = False".

Il devait faire référence à l'ancien assemblage Silverlight 4, qui n'était plus disponible après la mise à niveau vers Silverlight 5.

0
cesiumdeth