70

如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?

知道我应该在我的解决方案中查看什么文件吗?

实际上,使用“Make VS 2008”命令时,我在“Visual Build Pro”中收到此错误消息。这个命令在构建其他解决方案(比如大约 20 个)时工作得很好,我不确定为什么我的会收到错误。

任何帮助将不胜感激。:)

我正在使用 VS 2008 和 Visual Build Pro 6.7。

4

32 回答 32

82

就我而言,是 xxxxxxxxxxxx.vcxproj.user 文件导致了问题;崩溃后它是空白的。我重命名了它,问题就消失了。

于 2015-05-18T20:57:49.177 回答
37

确保任何 XML 文件(或任何将被 Visual Studio 解释为 XML 文件的文件)都具有正确的 XML 结构 - 即一个根元素(具有任何名称,我rootElement在我的示例中使用过):

<?xml version="1.0"?> 
<rootElement>
 ...
</rootElement>
于 2010-09-22T18:36:56.053 回答
33

当 BOM 出现时,您还会收到“缺少根元素”:)。BOM = 字节顺序标记。这是一个额外的字符,当以错误的编码保存文件时,它会添加到文件的开头。
在使用 XML 文件时,有时会在 Visual Studio 中发生这种情况。您可以编写一些代码以将其从所有文件中删除,或者如果您知道它是哪个文件,您可以强制 Visual Studio 使用特定编码(utf-8 或 ascii IIRC)保存它。

如果你在 VS 以外的编辑器中打开文件(试试 notepad++),你会在 <? 之前看到两个有趣的字符。xml 声明。

要在 VS 中解决此问题,请在 VS 中打开文件,然后根据 VS 的版本

  • 文件 > 高级保存选项 > 选择适当的编码
  • 文件>另存为>保留文件名,点击保存按钮右侧的下拉箭头选择一种编码
于 2010-09-22T19:07:09.330 回答
16

在我的情况下。我正在丢失指向文件的元素错误。NuGet.Config那时它看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <repositoryPath>Packages</repositoryPath>
</settings>

然后我只是添加configuration了实际上包装整个 xml 的标签。现在对我来说很好

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <settings>
     <repositoryPath>Packages</repositoryPath>
  </settings>
</configuration>
于 2016-06-24T18:21:20.480 回答
10

此错误是由损坏的 proj 文件引起的。

Visual Studio 始终在特定文件夹中有备份项目文件。

请浏览至:

C:\Users\<Your user>\Documents\Visual Studio <Vs version>\Backup Files\<your project>

你应该看到 2 个这样的文件:

Original-May-18-2018-1209PM.<your project>.csproj
Recovered-May-18-2018-1209PM.<your project>.csproj

您只需要复制文件:

Original-May-18-2018-1209PM.<your project>.csproj

并重命名为

<your project>.csproj 

并覆盖根项目文件夹。

问题解决了!

于 2018-05-18T10:43:42.243 回答
7

就我而言,当我打开.csproj文件时,它是空的,所以我去了我之前在 git 中的提交并复制了该文件的内容并将其粘贴到我当前的.csproj文件中。之后我删除了.csproj.user文件,重新加载了我的项目,一切又开始工作了。

于 2017-03-02T21:50:30.723 回答
7

我的项目没有加载并给了我一个Root Element Missing错误。我刚刚删除****.csproj.user了文件并重新加载了它。问题就这样解决了

于 2020-09-27T10:31:04.287 回答
5

我在运行 VS 2017 时遇到了这个问题,在构建时我收到了“缺少根元素”的错误。为我解决的问题是转到Tools > Nuget Package Manager > Package Manager Settings > General > Clear all Nuget Caches。之后,我再次运行构建并修复它。

于 2018-11-26T15:51:58.687 回答
4

我得到了同样的错误。显示错误 Microsoft.Data.Entity 无法加载缺少的根元素。当我从 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中删除该文件并再次打开我的解决方案时,我的问题就解决了。一切正常

于 2015-01-22T09:55:41.740 回答
4

您也可以搜索该文件。使用 PowerShell 导航到您的项目目录并运行 Get-FileMissingRoot:

function Get-FileMissingRoot {

    dir -recurse |
        where {
            ($_ -is [IO.FileInfo]) -and 
            (@(".xml", ".config") -contains $_.extension) 
        } |
        foreach {
            $xml = New-Object Xml.XmlDocument;
            $filename = $_.FullName
            try {
                $xml.Load($filename)
            }
            catch {
                write ("File: " + $filename)
                write ($_.Exception.Message)
            }
        }
}
于 2015-08-06T19:06:13.073 回答
4

就我而言, .csproj 已更改为编码格式。我在 Git(团队资源管理器)中撤消了对 csproj 的更改并重新加载了项目文件。这解决了问题。

于 2019-08-12T18:03:01.217 回答
3

就我而言,该文件C:\Users\xxx\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dfusrprf.xml充满了NULL。

我删了它; 它在 Dotfuscator 首次启动时重新创建,之后恢复正常。

于 2014-11-27T11:20:47.933 回答
2

当您编辑某些项目工具链设置 Atmel Studio 6.1.2730 SP2 时,有时会出现此错误。

在我的情况下,我尝试在配置中选择“所有配置”来编辑项目属性 > 工具链 > 链接器 > 常规设置。当我选中或取消选中某个设置时,会弹出一个包含错误的对话框。但是,我发现如果我一次只对一个构建配置进行相同的编辑;即仅选择“调试”或“发布”而不是“所有配置”。

有趣的是,即使选择了“所有配置”,我后来也能够编辑相同的链接器设置。我不知道我的项目中发生了什么变化使这成为可能。

于 2013-12-25T11:52:46.150 回答
2

我在运行 Visual Studio 2013 时出现蓝屏,当我重新启动时,我打算再次运行我的项目,但我总是遇到这个 headius 错误。反正

删除带有临时信息的文件夹 修复此问题。在我的情况下,项目是一个 Windows 服务器,基本上它创建一个包含一些 Tem 信息的文件夹。

该文件夹是

C:\Users\User_NAME\AppData\Local\NAme_OF_THeProject

里面 Exist a Folder with the Name of the Project+ some Generated GUI Service.ServerHostLoader_Url_u2jn0xkgjf1th0a3i2v03ft15vj4x52i

这是我删除的文件夹,现在我可以再次运行该项目。

于 2015-03-02T15:35:20.487 回答
2

在我的情况下,我升级到了 VS2017,并希望使用我的构建脚本(当我们使用 VS2015 时一直使用 MSBuild 3.5)构建所有带有 MSBuild 4 的项目。MSBuild 升级对于 Windows 桌面应用程序来说似乎很好,但对于具有紧凑框架的 Windows CE 的升级程序会给我这个令人困惑的错误。为 Windows CE 项目恢复到 MSBuild 3.5 为我解决了这个问题。

顺便说一句,我确实在 .csproj 文件中有 BOM,并为解决方案中的所有项目删除了它们,该解决方案不会构建但没有帮助。

于 2018-02-23T22:00:37.177 回答
2

在 xamarin 表单项目中。我删除了

.VS Project folder.
ProjectName.Android.csProj.User
ProjectName.Android.csProj.bak
于 2019-01-12T08:23:29.010 回答
1

就我而言,我收到了这样的消息: 看这张照片

我刚刚在项目文件(.csproj)中注释了下面的代码片段,问题就解决了。

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
于 2017-03-02T18:03:39.927 回答
1

在我的情况下,尝试发布应用程序时未加载 xxxx.pubxml.user。我删除了文件并重新启动了 Visual Studio,然后创建了一个新的配置文件来发布它,问题得到解决并成功发布。

于 2017-06-17T06:10:37.810 回答
1

嘿,我在 Mac 上使用 Cocoa C# 解决方案时遇到了同样的问题。 (但我解决了它!)

它总是说缺少根元素,因此无法加载我的 C# 项目文件。

我有 2017 Visual Studio Mac 社区版。几个小时后,我终于设法找到了解决方案(痛苦!)。

我的解决方案是因为与 Visual Studio 相关的框架太旧或损坏了。我发现这个是因为我试图通过 Cocoa 创建一个新的 Mac 解决方案,它说“未能保存解决方案”。然后,我尝试创建一个 Android 解决方案,它工作正常。转到您的“Finder”和“Go”->“Go to a Folder”,然后转到“Library/Frameworks”。我已经删除了与 Xamarin 相关的 mono.framework 和框架,因为我相信这些 Xamarin 框架已经损坏。

然后,卸载 Visual Studio 并重新安装。现在一切正常!

于 2017-08-07T21:14:27.487 回答
1

就我而言,我只是重命名了 .csproj.user 并重新启动了 Visual Studio 并打开了项目。它自动创建了另一个 .csproj.user 文件,该解决方案对我来说效果很好。

于 2019-07-25T06:22:14.593 回答
0

我只是通过转到源代码管理资源管理器并选择问题项目来解决这个问题,右键单击并选择高级菜单下的获取特定版本选项。然后选择类型作为最新版本并勾选以下两个复选框并单击获取按钮。然后我刷新了解决方案,我的项目恢复运行,问题消失了。请注意,这可能会覆盖您的本地项目,因此您当前的更改可能会丢失。因此,如果您的本地副本没有任何问题,那么您可以试试这个。希望能帮助到你

于 2015-07-31T11:32:16.887 回答
0

我在一个 Web API 项目上遇到了这个问题。最后发现它在我的“///”方法注释中。我将这些注释设置为自动生成 API 方法的文档。我评论中的某些内容让它变得疯狂。我删除了所有的回车符、特殊字符等。不太确定它不喜欢哪个东西,但它确实有效。

于 2016-08-10T17:24:59.860 回答
0

在我的情况下,RDLC 文件与资源文件 (.resx) 一起使用,我遇到了这个错误,因为我没有为我的 rdlc 报告创建对应的 resx 文件。

我的解决方案是以这种方式在 App_LocalResources 中添加文件 .resx :

\rep
\rep\myreport.rdlc
\rep\App_LocalResources\myreport.rdlc.resx
于 2017-02-07T21:15:44.733 回答
0

我有几次大规模的 VS2015 社区崩溃。

删除所有 .csproj.user 文件

其中充满了空字符,还有这些

C:\Users\UserName\AppData\Local\Temp\

.NETFramework,Version=v4.0.AssemblyAttributes.cs .NETFramework,Version=v4.5.AssemblyAttributes.cs .NETFramework,Version=v4.5.2.AssemblyAttributes.cs

于 2017-02-09T13:03:22.917 回答
0

就我而言,由于文件为空packages.config,我收到此错误 这导致 NUGET 包管理器失败并显示错误Root element is missing。 解决方案是从另一个非空文件中复制元素,然后根据需要进行更改。

示例(packages.config):

<?xml version="1.0" encoding="utf-8"?>
<packages>
 <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net451"/>
 <package id="Newtonsoft.Json" version="5.0.4" targetFramework="net451"/>
</packages>
于 2018-03-01T14:38:59.360 回答
0

就我而言,我使用的是带有水晶报告的 vs 2010。Innerexception 显示根元素丢失错误。转到内部消息中给出的 C:\Users\sam\AppData\Local\dssms\dssms.vshost.exe_Url_uy5is55gioxym5avqidulehrfjbdsn13\1.0.0.0 之类的目录,并确保 user.config 是正确的 XML(由于某种原因我的为空白)。

于 2018-03-29T10:40:21.677 回答
0

删除 .user 文件正是为我解决问题的方法。办公室附近的雷击关闭了我的 PC 并损坏了我的 .user 文件并且项目无法加载。我在 Notepad++ 中打开了文件,结果“空格”是 [NULL] 字符。删除了 .user 文件并加载了文件!

来源https://forums.asp.net/t/1491251.aspx?can+t+load+project+because+root+element+is+missing+

于 2019-01-02T07:33:07.833 回答
0

我在 Xamarin Forms 项目中遇到了同样的问题。iOS 项目不可用,我无法重新加载该项目。我一直在寻找不需要卸载任何东西的解决方案。

我从这个博客得到的答案: https ://dev.to/codeprototype/xamarin-form-application-failed-to-load-android-project-root-element-missing--27o0

因此,无需卸载任何东西,您可以删除 .csproj.user文件(或重命名),以便 Visual Studio 再次创建该文件。为我工作了两次。

于 2019-01-02T09:18:10.620 回答
0

在我的情况下,由于在 Visual Studio 保持打开状态时关闭了我的 PC,因此导致 csproj.user 文件保存为空。幸好我已经备份了,所以我只是从 csproj.user 复制了所有 xml 并粘贴到我受影响的项目 csproj.user 文件中,所以它工作得很好。

该文件仅包含构建设备信息等。

于 2019-01-15T06:35:35.207 回答
0

这些解决方案都没有解决我的问题。

就我而言,我完成了工作并关闭了电脑。在我无法编译我的项目后的第二天。我尝试了其中一些解决方案,但我意识到我的所有项目都不起作用。

为了修复它,我重新安装了 .net core Framework。

视觉工作室 2017

于 2019-07-17T00:18:21.340 回答
0

就我而言, Microsoft.Common.CurrentVersion.targets已损坏。我从其他系统复制了这个文件,它工作。

于 2019-08-01T22:32:52.447 回答
0

奇怪的是“缺少根元素”。未找到 JDK 时也会出现。

于 2021-11-18T10:12:20.740 回答