162 votes

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

Lorsque j'utilise un projet asp.net mvc 3 avec vs 2010, j'ai beaucoup d'avertissements comme ceux ci-dessous :

Je me demande si j'ai fait quelque chose de mal et si je dois modifier quelque chose, car il s'agit du projet prêt à l'emploi qui est fourni avec Visual Studio.

Avertissement 1 L'élément 'packages' n'est pas déclaré. C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010 \Projects\SlnHR\HR\packages.config 2 2 HR

Avertissement 2 Validation (XHTML 1.0 Transitional) : L'attribut 'charset' n'est pas un attribut valide de l'élément 'meta'. C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010 \Projects\SlnHR\HR\Views\Shared_Layout.cshtml 4 11 HR

Avertissement 20 Erreur 6002 : La table/vue 'HR.dbo.vw_aspnet_Users' n'a pas de clé primaire définie. La clé a été déduite et la définition a été créée comme une table/vue en lecture seule. C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010 \Projects\SlnHR\HRRazorForms\Models\HR.edmx 1 1 Formes HRRazor

web.config

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->

<configuration>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=xx; User Id=development; Password=xxxxx; Initial Catalog=HR" providerName="System.Data.SqlClient" />
  <add name="HREntities" connectionString="metadata=res://*/Models.HR.csdl|res://*/Models.HR.ssdl|res://*/Models.HR.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxxx;Initial Catalog=HR;User ID=development;Password=xxxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /></assemblies>
    </compilation>

    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

paquets.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="4.1.10331.0" />
  <package id="jQuery" version="1.5.1" />
  <package id="jQuery.UI.Combined" version="1.8.11" />
  <package id="jQuery.Validation" version="1.8.0" />
  <package id="jQuery.vsdoc" version="1.5.1" />
  <package id="Modernizr" version="1.7" />
</packages>

2 votes

422voto

Joel Points 1531

Tiré de cette réponse .

  1. Fermez votre packages.config fichier.
  2. Construire
  3. L'avertissement a disparu !

C'est la première fois que je vois qu'ignorer un problème le fait disparaître...

Modification en 2020 : si vous consultez cet avertissement, pensez à passer à la version suivante PackageReference si vous le pouvez

1 votes

Comme @carsten-könig l'a dit, le schéma n'est effectivement pas validé (VS se plaindra d'une telle erreur dans n'importe quel fichier XML, pas seulement pour nuget). Mais puisque le fichier généré automatiquement est sûr (et seulement utilisé par nuget - qui gère le XML sans problème), il est parfaitement possible d'ignorer les avertissements.

7 votes

En fait, dans VS2013, cela n'a pas fonctionné pour moi. Bien que le projet se construise correctement, l'avertissement "squiggle" est toujours présent lorsque le fichier packages.config est réouvert.

2 votes

JosephDoggie Dans n'importe quel VS, vous obtiendrez le même comportement. Comme indiqué, vous les obtiendrez pour tout fichier XML non validé. La seule différence est que, puisque ce fichier est généré automatiquement et qu'il est censé être lu uniquement par nuget, vous pouvez ignorer les avertissements.

57voto

Dark Matter Points 461

Utilisez <packages xmlns="urn:packages"> à la place de <packages>

11voto

Carsten König Points 14720

Oh ok - maintenant je comprends. Vous pouvez l'ignorer - le XML n'est tout simplement pas correct - l'élément packages n'est en effet pas déclaré (il n'y a pas de référence à un schéma ou autre). Je pense qu'il s'agit d'un bogue mineur connu qui n'aura aucun effet puisque seul NuGet l'utilisera.

Voir ce similaire question également.

0 votes

Eh bien, c'est correct, mais surtout parce qu'il n'y a aucun moyen pour que ce soit incorrect.

5voto

Tom English Points 59

Changez le nœud en et créez un fichier, packages.xsd, dans le même dossier (et incluez-le dans le projet) avec le contenu suivant :

<?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>

2voto

FabioIn Points 137

Cela fonctionne et reste même après l'ajout d'un nouveau paquet :

Ajoutez le !DOCTYPE suivant au-dessus de l'élément :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE packages [
  <!ELEMENT packages (package*)>
  <!ELEMENT package EMPTY>
  <!ATTLIST package
  id CDATA #REQUIRED
  version CDATA #REQUIRED
  targetFramework CDATA #REQUIRED
  developmentDependency CDATA #IMPLIED>
]>

Merci Chuckc !

https://stackoverflow.com/questions/6774578/nuget-packages-element-is-not-declared-warning

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