165

When using asp.net mvc 3 project with vs 2010 I have lots of warnings like the ones below:

I wonder if I did something wrong and I need to change something, because this is the out of the box project that comes within Visual Studio.

Warning 1 The 'packages' element is not declared. C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010\Projects\SlnHR\HR\packages.config 2 2 HR

Warning 2 Validation (XHTML 1.0 Transitional): Attribute 'charset' is not a valid attribute of element 'meta'. C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010\Projects\SlnHR\HR\Views\Shared_Layout.cshtml 4 11 HR

Warning 20 Error 6002: The table/view 'HR.dbo.vw_aspnet_Users' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view. C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010\Projects\SlnHR\HRRazorForms\Models\HR.edmx 1 1 HRRazorForms

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>

packages.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>
Joel
  • 7,401
  • 4
  • 52
  • 58
Luis Valencia
  • 32,619
  • 93
  • 286
  • 506
  • 2
    possible duplicate of [nuget 'packages' element is not declared warning](http://stackoverflow.com/questions/6774578/nuget-packages-element-is-not-declared-warning) – Random Dev Oct 07 '11 at 09:15

5 Answers5

427

Taken from this answer.

  1. Close your packages.config file.
  2. Build
  3. Warning is gone!

This is the first time I see ignoring a problem actually makes it go away...

Edit in 2020: if you are viewing this warning, consider upgrading to PackageReference if you can

Joel
  • 7,401
  • 4
  • 52
  • 58
  • 1
    As @carsten-könig stated, the schema is indeed not validated (VS will complain about such error in any XML file, not just only for nuget). But since the file is auto-generated is safe (and only used by nuget - which handles the XML just fine) it is perfectly fine to ignore the warnings. – Joel Sep 24 '14 at 11:54
  • 7
    Actually, in VS2013, this didn't work for me. Though the project builds ok, the "squiggle" warning is still there when packages.config file is re-opened. – JosephDoggie Mar 05 '15 at 20:12
  • 2
    @JosephDoggie In any VS you will get the same behavior. As stated, you'll get those for any non-validated XML file. The only difference is that since this file is auto-generated and supposed to be read by nuget only, it's pretty safe to ignore the warnings. – Joel Mar 06 '15 at 13:15
  • In my case the the packages.config file was not open. Open it. Close it. Rebuild!. This worked for me. – Legends Aug 17 '16 at 22:38
  • 15
    it's 2018. Same bug. Same solution. Goddamnit – kDar May 14 '18 at 13:58
  • 10
    2020. same bug. same solution. Unbelievable. – Mark Mayo Jul 20 '20 at 04:18
  • 4
    2021. Same bug, same solution. Incredible. – Reece Aug 30 '21 at 03:27
  • 6
    2022. Same bug, same solution. Crazy – SeReGa Jan 26 '22 at 22:02
  • 2
    2023. Same bug, same solution. Astonishing – demoncodemonkey Jul 31 '23 at 09:40
57

Use <packages xmlns="urn:packages">in the place of <packages>

Indranil
  • 2,229
  • 2
  • 27
  • 40
11

Oh ok - now I get it. You can ignore this one - the XML for this is just not correct - the packages-element is indeed not declared (there is no reference to a schema or whatever). I think this is a known minor bug that won't do a thing because only NuGet will use this.

See this similar question also.

Community
  • 1
  • 1
Random Dev
  • 51,810
  • 9
  • 92
  • 119
5

Change the node to and create a file, packages.xsd, in the same folder (and include it in the project) with the following contents:

<?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>
Zymus
  • 1,673
  • 1
  • 18
  • 38
Tom English
  • 59
  • 1
  • 1
2

This works and remains even after adding a new package:

Add the following !DOCTYPE above the element:

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

Thanks chuckc!

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

FabioIn
  • 167
  • 1
  • 2
  • 8