web-dev-qa-db-fra.com

L'élément 'packages' du nuget n'est pas déclaré avertissement

pas un showstopper mais lorsqu’on utilise nuget dans un projet, il crée un fichier packages.config avec cette forme

<?xml version="1.0" encoding="utf-8"?>
<packages>
   ... your packages
</packages> 

cela donne un avertissement dans VS

The 'packages' element is not declared.

L’origine du problème a quelque chose à voir avec la déclaration XML, je suppose.

De plus, je pense que le paquet de définition par défaut ne devrait pas lancer d’avertissements.

Est-ce que quelqu'un sait ce que je devrais changer pour que je ne reçoive pas cet avertissement? (c.-à-d. même si je ne peux le voir que lorsque le fichier est ouvert, il est également affiché en permanence sous forme d'avertissement avec certaines règles de l'autorité de certification.)

134
roundcrisis

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

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
      targetNamespace="urn:packages" xmlns="urn:packages">
  <xs:element name="packages">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="package" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:string" use="required" />
            <xs:attribute name="version" type="xs:string" use="required" />
            <xs:attribute name="targetFramework" type="xs:string" use="optional" />
            <xs:attribute name="allowedVersions" type="xs:string" use="optional" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

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 Schémas de Visual Studio (le chemin peut légèrement différer, il s'agit de D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas pour moi).

Ensuite, éditez la balise <packages> Dans le fichier packages.config (Attribut add xmlns):

<packages xmlns="urn:packages">

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

95
Łukasz Wiatrak

Vous ne le verrez que lorsque le fichier est ouvert. Lorsque vous fermez le fichier dans Visual Studio, les avertissements disparaissent.

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

182

En fait, la bonne réponse à cette question est d’ajouter le schéma à votre document, comme

<packages xmlns="http://schemas.Microsoft.com/packaging/2010/07/nuspec.xsd">

...et tu as fini :)

Si le fichier XSD n'est pas encore mis en cache et n'est pas disponible, vous pouvez l'ajouter comme suit à partir de la console NuGet.

Install-Package NuGet.Manifest.Schema -Version 2.0.0

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

%VisualStudioPath%\Xml\Schemas
112
Stefan Z Camilleri

Aucune des réponses ne résoudra votre problème de façon permanente. Si vous allez dans le chemin de l'ajout de XSD (dans le menu Xml, sélectionnez "Créer un schéma"), vous rencontrerez des problèmes avec le gestionnaire de paquets car il va nettoyer votre fichier packages.config lorsque vous ajoutez un nouveau paquet.

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

6
Baris

Cela se produit car VS ne connaît pas le schéma de ce fichier. Notez que ce fichier est davantage un détail d'implémentation et n'est pas quelque chose que vous devez normalement ouvrir directement. À la place, vous pouvez utiliser la boîte de dialogue NuGet pour gérer les packages installés dans un projet.

4
David Ebbo

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

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

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

enter image description here

Cela créerait un packages.xsd _ pour vous et l’ouvre dans Visual Studio:

enter image description here

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

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

Maintenant, je ne veux pas faire référence à la packages.xsd depuis un dossier Temp, mais je souhaite l’ajouter à ma solution et au contrôle de code source, afin que d’autres utilisateurs puissent l’obtenir ... ainsi j’ai copié packages.xsd et collé dans mon dossier de solution. Ensuite, j'ai ajouté le fichier à ma solution:

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

2. Depuis VS, faites un clic droit sur la solution -> Ajouter -> Article existant ... puis ajoutez packages.xsd

enter image description here

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

Ouvrez le fichier de configuration, puis sélectionnez dans le menu supérieur:

XML -> Schémas ...

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

enter image description here

3
Hooman Bahreini