элемент nuget 'packages' не объявлен как предупреждение - PullRequest
131 голосов
/ 21 июля 2011

не showtopper, но при использовании nuget в проекте он создает файл packages.config с этой формой

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

, что дает предупреждение в VS

The 'packages' element is not declared.

ИсточникЯ думаю, что проблема связана с объявлением xml.

Также я думаю, что пакет определения по умолчанию не должен выдавать предупреждения.

Кто-нибудь знает, что я должен изменить его наЯ не получил это предупреждение?(то есть, даже если я вижу его только при открытом файле, он также постоянно отображается как предупреждение с включенными определенными правилами CA.)

Ответы [ 6 ]

180 голосов
/ 01 августа 2011

Вы увидите это только когда файл открыт. Когда вы закроете файл в Visual Studio, предупреждения исчезнут

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

111 голосов
/ 03 декабря 2013

На самом деле правильный ответ на это - просто добавить схему в ваш документ, например,

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

... и все готово:)

Если XSDеще не кэширован и недоступен, вы можете добавить его из консоли NuGet следующим образом:

Install-Package NuGet.Manifest.Schema -Version 2.0.0

Как только это будет сделано, как отмечено в комментарии ниже, вы можете переместить его из текущей папки в официальную.папка схемы, которая находится в

%VisualStudioPath%\Xml\Schemas
94 голосов
/ 05 ноября 2011

Вы всегда можете создать простую схему xsd для «packages.config», чтобы избавиться от этого предупреждения.Для этого создайте файл с именем «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>

Расположение этого файла (две опции)

  • В той же папке, что и файл packages.config,
  • Если вы хотите поделиться packages.xsd между несколькими проектами, переместите его в папку схем Visual Studio (путь может немного отличаться, для меня это D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas).

Затем отредактируйте тег <packages> в файле packages.config (добавьте атрибут xmlns):

<packages xmlns="urn:packages">

Теперь предупреждение должно исчезнуть (даже если файл packages.config открыт в Visual Studio).

6 голосов
/ 09 августа 2016

Ни один из ответов не решит вашу проблему навсегда. Если вы перейдете по пути добавления XSD (в меню Xml выберите «Создать схему»), у вас в конечном итоге возникнут проблемы с менеджером пакетов, так как он очистит ваш файл packages.config при добавлении нового пакета.

Лучшее решение - просто игнорировать, закрыв файл, когда вы его не используете.

4 голосов
/ 22 июля 2011

Это происходит потому, что VS не знает схему этого файла. Обратите внимание, что этот файл - скорее деталь реализации, а не то, что вам обычно нужно открывать напрямую. Вместо этого вы можете использовать диалоговое окно NuGet для управления пакетами, установленными в проекте.

1 голос
/ 09 октября 2018

Проблема в том, что вам нужна схема xsd для packages.config.

Вот как вы можете создать схему ( Я нашел ее здесь) :

Откройте ваш файл конфигурации -> XML -> Создать схему

enter image description here

Это создаст для вас packages.xsd и откроетэто в Visual Studio:

enter image description here

В моем случае packages.xsd было создано по этому пути:

C:\ Users \ MyUserName \ AppData \ Local \ Temp

Теперь я не хочу ссылаться на packages.xsd из папки Temp, но хочу, чтобы он был добавлен в мое решение и добавлен в исходный кодконтроль, чтобы другие пользователи могли его получить ... поэтому я скопировал packages.xsd и вставил его в папку с решением.Затем я добавил файл в свое решение:

1.Скопируйте packages.xsd в ту же папку, что и ваше решение

2.В VS щелкните правой кнопкой мыши решение -> Добавить -> Существующий элемент ... , а затем добавьте packages.xsd

enter image description here

Итак, теперьмы создали packages.xsd и добавили его в Решение.Все, что нам нужно сделать, это указать файлу конфигурации использовать эту схему.

Откройте файл конфигурации, затем в верхнем меню выберите:

XML -> Схемы ...

Добавьте ваш packages.xsd и выберите Используйте эту схему (см. Ниже)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...