145 votes

Le message 'élément nuget 'packages' n'est pas déclaré' n'est pas présent.

Pas un élément bloquant mais lorsque l'on utilise nuget dans un projet, il crée un fichier packages.config avec cette forme

   ... vos packages

cela donne un avertissement dans VS

L'élément 'packages' n'est pas déclaré.

L'origine du problème a quelque chose à voir avec la déclaration xml je suppose.

Aussi je pense que la définition par défaut du package ne devrait pas générer d'avertissements.

Est-ce que quelqu'un sait ce que je devrais changer pour ne pas obtenir cet avertissement? (c'est-à-dire même si je ne le vois que lorsque le fichier est ouvert, il s'affiche également en permanence comme un avertissement avec certaines règles CA)

3 votes

J'ai trouvé [cette solution][1] pour ce sujet, que je pense être meilleure. [1]: stackoverflow.com/questions/2833243/…

1 votes

Fr : tbh la vraie solution est d'ajouter le schéma officiel... veuillez voir ma réponse ci-dessous

0 votes

Voici le problème correspondant sur github: github.com/NuGet/Home/issues/1836

192voto

Gregory Points 696

Vous le verrez uniquement lorsque le fichier est ouvert. Lorsque vous fermerez le fichier dans Visual Studio, les avertissements disparaîtront.

http://nuget.codeplex.com/discussions/261638

8 votes

Ha, ignorer le problème ne le fera pas disparaître :D. Mais est-ce que ce que vous ne pouvez pas voir peut vous faire du mal?

5 votes

Right @gregory nous devrions ignorer cela.. il y a un autre impact de cet avertissement. Il est généré par nuget et nuget sait comment utiliser ce fichier très bien.

0 votes

Oui, cela devrait être la réponse acceptée. Celui ci-dessus est l'une des raisons pour lesquelles je dois porter une perruque au travail.

116voto

Stefan Z Camilleri Points 1426

En fait, la réponse correcte est simplement d'ajouter le schéma à votre document, comme ceci

...et le tour est joué :)

Si le XSD n'est pas déjà mis en cache et n'est pas disponible, vous pouvez l'ajouter comme suit depuis la console NuGet

Install-Package NuGet.Manifest.Schema -Version 2.0.0

Une fois cela fait, comme indiqué dans un commentaire ci-dessous, vous voudrez peut-être le déplacer de votre dossier actuel vers le dossier de schéma officiel qui se trouve dans

%VisualStudioPath%\Xml\Schemas

0 votes

Pourquoi est-ce que je ne peux pas aller à cette URL?

4 votes

Vous avez raison de dire que le xsd en question n'est pas actuellement accessible, cela étant dit, selon leur définition du W3C, aussi trompeuse soit-elle, la déclaration xmlns (espace de noms) n'est rien de plus qu'une chaîne sous forme d'URI, et il n'est pas nécessaire, ni recommandé, qu'une ressource soit effectivement rendue disponible là-bas (fr.wikipedia.org/wiki/Espace_de_noms_XML)

0 votes

Intéressant. N'y a-t-il pas une ressource quelque part qui spécifie comment ce fichier XML devrait être? Comment Visual Studio vérifie-t-il le format?

94voto

Łukasz Wiatrak Points 1351

Vous pouvez toujours créer un schéma XSD simple pour 'packages.config' pour vous débarrasser de cet avertissement. Pour ce faire, créez un fichier nommé "packages.xsd" :

Emplacement de ce fichier (deux options)

  • Dans le même dossier que le fichier 'packages.config',
  • Si vous souhaitez partager packages.xsd entre plusieurs projets, déplacez-le dans le dossier des schémas Visual Studio (le chemin peut légèrement différer, c'est D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas pour moi).

Ensuite, modifiez la balise dans le fichier packages.config (ajoutez l'attribut xmlns) :

Maintenant, l'avertissement devrait disparaître (même si le fichier packages.config est ouvert dans Visual Studio).

1 votes

Ne devez-vous pas modifier la deuxième ligne du XSL : w3.org/2001/XMLSchema" targetNamespace="urn:packages" xmlns="urn:packages">

1 votes

Est-ce que vous savez pourquoi Visual Studio ne crée pas ce fichier xsd?

1 votes

Vous avez manqué l'attribut targetFramework dans le fichier de schéma XML. Je reçois une erreur l'attribut targetFramework n'est pas défini

6voto

Baris Points 639

Aucune des réponses ne résoudra votre problème de manière permanente. Si vous choisissez d'ajouter un schéma XSD (dans le menu Xml, sélectionnez "Créer un schéma"), vous finirez par rencontrer des problèmes avec le gestionnaire de packages car il nettoiera votre fichier packages.config lorsque vous ajouterez un nouveau package.

La meilleure solution est simplement d'ignorer en fermant le fichier lorsque vous ne l'utilisez pas.

0 votes

+1; juste soyez conscient que cette astuce fonctionne également (et ne cassera pas le gestionnaire de paquets).

5voto

Hooman Bahreini Points 3202

Le problème est que vous avez besoin d'un schéma xsd pour packages.config.

Voici comment vous pouvez créer un schéma (je l'ai trouvé ici):

Ouvrez votre fichier de configuration -> XML -> Créer un schéma

entrer la description de l'image ici

Cela va créer un packages.xsd pour vous, et l'ouvrir dans Visual Studio :

entrer la description de l'image ici

Dans mon cas, le packages.xsd a été créé sous ce chemin :

C:\Utilisateurs\MonNomUtilisateur\AppData\Local\Temp

Maintenant je ne veux pas faire référence au packages.xsd à partir d'un dossier Temp, mais je veux l'ajouter à ma solution et le mettre sous contrôle de source, donc j'ai copié packages.xsd et je l'ai collé dans le dossier de ma solution. Ensuite j'ai ajouté le fichier à ma solution :

1. Copiez packages.xsd dans le même dossier que votre solution

2. Depuis VS, faites un clic droit sur la solution -> Ajouter -> Élément existant... et ensuite ajoutez packages.xsd

entrer la description de l'image ici

Donc, nous avons maintenant créé packages.xsd et l'avons ajouté à la Solution. Tout ce que nous avons à faire est d'indiquer au fichier de configuration d'utiliser ce schéma.

Ouvrez le fichier de configuration, puis dans le menu du haut sélectionnez :

XML -> Schémas...

Ajoutez votre packages.xsd, et sélectionnez Utiliser ce schéma (voir ci-dessous)

entrer la description de l'image ici

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