Nuget 的‘ package’元素没有声明为警告

但是当在项目中使用 nuget 时,它会创建一个具有这个形状的 packages.config 文件

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

这在 VS 中给出了一个警告

The 'packages' element is not declared.

我猜问题的根源与 xml 声明有关。

另外,我认为默认定义包不应该抛出警告。

有人知道我应该把它改成什么吗这样我就不会收到警告了?(即使我只能在文件打开时看到它,它也会在某些 CA 规则下不断显示为警告。)

110306 次浏览

这是因为 VS 不知道这个文件的模式。注意,这个文件更多的是一个实现细节,而不是您通常需要直接打开的东西。相反,您可以使用 NuGet 对话框来管理安装在项目中的包。

只有在文件打开时才能看到它。 当您在 VisualStudio 中关闭该文件时,警告将消失

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

您总是可以为‘ packages.config’创建简单的 xsd 模式来消除这个警告。为此,创建名为“ 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,请将其移动到 VisualStudioSchemas 文件夹(路径可能略有不同,对我来说是 D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas)。

然后,在 packages.config文件中编辑 <packages>标记(添加 xmlns属性) :

<packages xmlns="urn:packages">

现在警告应该消失(即使在 Visual Studio 中打开 packages.config 文件)。

实际上,正确的答案是将模式添加到文档中,如下所示

<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

没有一个答案能永远解决你的问题。如果选择添加 XSD 的路径(从 Xml 菜单中选择“ Create schema”) ,那么在添加新包时,包管理器将清理 packages.config 文件,从而导致出现问题。

最好的解决方案就是在不使用该文件时关闭它。

问题是,您需要 packages.config的 xsd 模式。

这就是如何创建模式(我在这里找到的):

打开您的配置文件-> XML-> 创建模式

enter image description here

这将为您创建一个 packages.xsd,并在 VisualStudio 中打开它:

enter image description here

在我的例子中,packages.xsd就是按照这种方式创建的:

C: Users MyUserName AppData Local Temp

现在我不想从一个临时文件夹中引用 packages.xsd,但是我希望它被添加到我的解决方案中,并添加到源代码控制中,这样其他用户就可以得到它... 所以我复制了 packages.xsd并粘贴到我的解决方案文件夹中。然后我将这个文件添加到我的解决方案中:

1. 将 packages.xsd复制到与解决方案相同的文件夹中

2. 从 VS 中,右键单击 Solution-> Add->  现有条目... ,然后添加 packages.xsd

enter image description here

因此,现在我们已经创建了 packages.xsd并将其添加到解决方案中。我们需要做的就是告诉配置文件使用这个模式。

打开配置文件,然后从顶部菜单中选择:

XML-> 模式..。

添加您的 packages.xsd,并选择 使用此架构(见下文)

enter image description here

即使添加了一个新的软件包,这种方法仍然有效:

添加以下内容! < package > 元素上方的 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>
]>

当你有一个旧的项目版本时,有时会发生这种情况。要解决这个问题,请按照以下步骤:

  1. 右键单击 References 并选择 < strong > packages.config ToPackageReference. .
  2. 好的
  3. 等待,同时项目包正在更新