Nuget - “名称不能以'<'字符开头

Nuget - "Name cannot begin with the '<' character

我有 VS 2013 更新 5。我右键单击一个项目并 select "Manage NuGet Packages"。当我尝试安装 "SpecFlow" 包时,我收到消息:

"Name cannot begin with the '<' character, hexadecimal value 0x3C, Line 10, position 2."

如果我使用包管理器控制台,我会遇到同样的问题

知道它指的是哪个文件吗?我该如何解决这个问题?

Any ideas which file it's referring to? How can I fix this?

您能否在安装包 SpecFlow 之前成功构建您的应用程序?似乎 web.config 中可能存在错误或其他一些具有意外结束标记的文件

根据您在输出中的构建日志:

您可以注意到该包已成功安装到项目中,但 NuGet 在将包添加到 Common.Components 时会抛出异常。您可以尝试将此包安装到新创建的项目中,并检查您是否仍然看到问题。

作为测试,我创建了一个新的 ASP.NET Web API 项目并删除了 web.config 中的一个 > 标签。然后我尝试将 NuGet 包安装到这个格式错误的项目 web.config 我收到以下错误:

所以我的建议是仔细检查所有与项目有任何关系的文件(比如一些绑定到设置的属性,你之前在设计器中设置的资源,项目参考)

注意:许多格式错误的错误可以在不提及任何警告的情况下生成。所以我们还需要手动检查畸形错误。

我在本地启动我的 ASP.NET 服务器时遇到了类似的错误。错误消息指出 XML 在特定行的 web.config 中格式错误,我发疯了寻找该文件中的错误。

如果您遇到这样的错误,请在 web.config 中查找导入另一个文件的节点,例如 <appSettings file="PrivateSettings.config">

此语句实际上会在该行注入该文件的内容,并且错误消息将不包含正在解析的实际 XML。

检查解析过程中可能注入的其他文件的内容。

我会分享我的答案,因为我遇到了同样的问题,但解决方案对我来说有所不同。 Rob Bowman 的评论对我来说是一个提示。我在一个本地分支上工作,想切换回 master 分支看一些东西。切换分支时,我选择隐藏我的更改。 Visual Studio 在此过程中搞砸了一些事情。我打开 web.config 文件,发现里面有一些关于隐藏的奇怪代码。我返回并在第一个分支中提交了我的更改,并解决了分支 changes/stashes 的任何 问题,然后这个错误就消失了,无需进行任何手动代码编辑。