Элемент nuget 'packages' не объявляется предупреждением
не showstopper, но при использовании nuget в проекте он создает файл package.config с этой формой
<?xml version="1.0" encoding="utf-8"?>
<packages>
... your packages
</packages>
это дает предупреждение в VS
The 'packages' element is not declared.
Происхождение проблемы как-то связано с объявлением xml.
Также я думаю, что пакет определения по умолчанию не должен вызывать предупреждения.
Кто-нибудь знает, что я должен изменить, чтобы я не получил это предупреждение? (т.е. даже если я вижу это только в том случае, если файл открыт, он также постоянно отображается как предупреждение с некоторыми правилами CA.)
Ответы
Ответ 1
Вы всегда можете сделать простую схему 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 Schemas (путь может немного отличаться, это D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas
для меня).
Затем отредактируйте тег <packages>
в packages.config
файле (добавьте атрибут xmlns
):
<packages xmlns="urn:packages">
Теперь предупреждение должно исчезнуть (даже если в Visual Studio открыт файл package.config).
Ответ 2
Вы увидите это только в том случае, если файл открыт.
Когда вы закроете файл в Visual Studio, предупреждения исчезнут.
http://nuget.codeplex.com/discussions/261638
Ответ 3
На самом деле правильный ответ на этот вопрос заключается в том, чтобы просто добавить схему в ваш документ, например
<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
Ответ 4
Ни один из ответов не решит вашу проблему навсегда. Если вы перейдете на путь добавления XSD (из меню Xml, выберите "Создать схему" ), у вас возникнут проблемы с менеджером пакетов, так как он очистит ваш файл package.config при добавлении нового пакета.
Лучшее решение просто игнорируется, закрывая файл, когда вы его не используете.
Ответ 5
Это происходит потому, что VS не знает схему этого файла. Обратите внимание, что этот файл больше связан с реализацией, а не с тем, что вам обычно нужно открывать напрямую. Вместо этого вы можете использовать диалог NuGet для управления пакетами, установленными в проекте.
Ответ 6
Проблема в том, что вам нужна схема 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]()
Ответ 7
Кажется, это работает даже после добавления нового пакета:
Я добавил следующее! DOCTYPE над корневым элементом:
<?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>
]>