不是showstopper,但在项目中使用nuget时,会创建一个具有此形状的packages.config文件
<?xml version="1.0" encoding="utf-8"?>
<packages>
... your packages
</packages>
这会在VS中发出警告
The 'packages' element is not declared.
问题的根源与我猜的xml声明有关。
另外我认为默认定义包不应该抛出警告。
有谁知道我该怎么改变它所以我没有得到这个警告? (即使我只有在文件打开时才能看到它,它也会随着某些CA规则不断显示警告。)
答案 0 :(得分:180)
只有在文件打开时才会看到它。 当您在Visual Studio中关闭文件时,警告消失
答案 1 :(得分:111)
实际上,对此的正确答案是将架构添加到文档中,如此
<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
答案 2 :(得分:93)
您总是可以为'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.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中打开了packages.config文件)。
答案 3 :(得分:6)
所有答案都不会永久解决您的问题。如果你去添加XSD的路径(从Xml菜单,选择“创建模式”),你将最终遇到包管理器的问题,因为它会在你添加新包时清理你的packages.config文件。
只有在不使用文件时关闭文件才能忽略最佳解决方案。
答案 4 :(得分:4)
这是因为VS不知道此文件的架构。请注意,此文件更多是实现细节,而不是您通常需要直接打开的内容。相反,您可以使用NuGet对话框来管理项目中安装的软件包。
答案 5 :(得分:0)
问题是,您需要packages.config
的xsd架构。
这是创建模式的方法(I found it here):
打开您的配置文件-> XML->创建架构
这将为您创建一个packages.xsd
,并在Visual Studio中将其打开:
对于我来说,packages.xsd
是在以下路径下创建的:
C:\ Users \ MyUserName \ AppData \ Local \ Temp
现在,我不想从Temp文件夹中引用packages.xsd
,但是我希望将其添加到我的解决方案中并添加到源代码管理中,以便其他用户可以获取它...所以我复制了packages.xsd
并将其粘贴到我的解决方案文件夹中。然后将文件添加到解决方案中:
1。将packages.xsd
复制到解决方案所在的文件夹中
2。在VS中,右键单击解决方案->添加->现有项... ,然后添加packages.xsd
因此,现在我们创建了packages.xsd
并将其添加到解决方案中。我们需要做的就是告诉配置文件使用此架构。
打开配置文件,然后从顶部菜单中选择:
XML->模式...
添加您的packages.xsd
,然后选择使用此架构(请参见下文)
答案 6 :(得分:0)
即使添加了新软件包,此方法仍然有效:
在
<?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>
]>
答案 7 :(得分:0)
有时会在您拥有旧项目版本时发生。要解决它,请执行以下步骤: