Phần tử 'gói' không được khai báo


131

Khi sử dụng dự án asp.net mvc 3 với vs 2010, tôi có rất nhiều cảnh báo như những cảnh báo dưới đây:

Tôi tự hỏi nếu tôi đã làm điều gì đó sai và tôi cần phải thay đổi điều gì đó, bởi vì đây là dự án vượt trội trong Visual Studio.

Cảnh báo 1 Phần tử 'gói' không được khai báo. C: \ Users \ LUIS.SIMBIOS \ Documents \ Visual Studio 2010 \ Project \ SlnHR \ HR \ tests.config 2 2 HR

Cảnh báo 2 Xác thực (Chuyển đổi XHTML 1.0): Thuộc tính 'bộ ký tự' không phải là thuộc tính hợp lệ của phần tử 'meta'. C: \ Users \ LUIS.SIMBIOS \ Documents \ Visual Studio 2010 \ Project \ SlnHR \ HR \ Views \ Shared_Layout.cshtml 4 11 HR

Cảnh báo 20 Lỗi 6002: Bảng / chế độ xem 'HR.dbo.vw_aspnet_Users' không có khóa chính được xác định. Khóa đã được suy ra và định nghĩa được tạo dưới dạng bảng / khung nhìn chỉ đọc. C: \ Users \ LUIS.SIMBIOS \ Documents \ Visual Studio 2010 \ Project \ SlnHR \ HRRazorForms \ Model \ 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>

gói.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>

Câu trả lời:


345

Lấy từ câu trả lời này .

  1. Đóng packages.configtệp của bạn .
  2. Xây dựng
  3. Cảnh báo đã biến mất!

Đây là lần đầu tiên tôi thấy bỏ qua một vấn đề thực sự khiến nó biến mất ...

Chỉnh sửa vào năm 2020: nếu bạn đang xem cảnh báo này, hãy xem xét nâng cấp lên GóiReference nếu bạn có thể


1
Như @ carsten-könig đã nêu, lược đồ thực sự không được xác thực (VS sẽ khiếu nại về lỗi đó trong bất kỳ tệp XML nào, không chỉ cho nuget). Nhưng vì tệp được tạo tự động là an toàn (và chỉ được sử dụng bởi nuget - xử lý XML tốt) nên việc bỏ qua các cảnh báo là hoàn toàn tốt.
Joel

7
Trên thực tế, trong VS2013, điều này không làm việc cho tôi. Mặc dù dự án xây dựng ổn, nhưng cảnh báo "squiggle" vẫn ở đó khi tệp tests.config được mở lại.
JosephDoggie

2
@JosephDoggie Trong bất kỳ VS nào bạn cũng sẽ có hành vi tương tự. Như đã nêu, bạn sẽ nhận được những thứ đó cho bất kỳ tệp XML không được xác thực nào. Sự khác biệt duy nhất là vì tệp này được tạo tự động và chỉ được đọc bởi nuget, nên việc bỏ qua các cảnh báo là khá an toàn.
Joel

Trong trường hợp của tôi, tập tin tests.config không được mở. Mở nó ra. Đóng nó lại. Tái tạo!. Điều này làm việc cho tôi.
Huyền thoại

11
đó là năm 2018. Cùng một lỗi. Giải pháp tương tự. Chết tiệt
kDar

33

Sử dụng <packages xmlns="urn:packages">ở nơi<packages>


Tôi đã gặp một lỗi MSB3644 không cho phép tôi xây dựng dự án. Bằng cách nào đó bằng cách làm những gì bạn nói tôi đã sửa lỗi của tôi! Tôi không biết tại sao, nếu bạn có thể giải thích cho tôi, tôi sẽ đánh giá cao, bạn sẽ cứu mạng tôi hai lần.
Diego Orellana

1
Làm thế nào bạn phát hiện ra rằng nó cần xmlns "urn: gói"? - Cảm ơn trước!
Jimmyt1988

1
Tôi đã tìm kiếm trên internet và tìm thấy một số manh mối ở đâu đó. Sau đó, tôi đã thử điều này và nó đã làm việc.
Vật chất tối

Nó đưa ra lỗi như sau: VS không thể tìm thấy thông tin lược đồ cho phần tử urn: gói
jainashish

1
Điều này làm cho dự án của tôi (VS2015) không nhận ra bất kỳ gói
nuget nào

12

Oh ok - bây giờ tôi hiểu rồi. Bạn có thể bỏ qua cái này - XML ​​cho điều này là không chính xác - phần tử gói thực sự không được khai báo (không có tham chiếu đến lược đồ hoặc bất cứ điều gì). Tôi nghĩ rằng đây là một lỗi nhỏ đã biết sẽ không làm được điều gì vì chỉ có NuGet sẽ sử dụng nó.

Xem câu hỏi tương tự này cũng có.


Vâng, điều đó đúng, nhưng chủ yếu là vì không có cách nào để nó không chính xác.
Grault

5

Thay đổi nút thành và tạo một tệp, gói.xsd, trong cùng một thư mục (và đưa nó vào dự án) với các nội dung sau:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.