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


69

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

知道我应该在解决方案中查看哪个文件吗?

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

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

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

Answers:


35

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

<?xml version="1.0"?> 
<rootElement>
 ...
</rootElement>

3
我的解决方案中有大约数千个文件。有什么特别的扩展要看吗?
Gerhard Weiss 2010年

3
@Gerhard Weiss-.xml,.config,.xsd,.xsl是一个好的开始。如果您有任何XHTML文件,它们也是不错的选择。我对您的项目以及项目中包含的文件一无所知,所以我无法真正告诉您。但是,在错误窗口中查看错误-它应该告诉您是哪个文件引起了问题。
Oded 2010年

工作简短,但必须使用Kahlil的答案。
埃里克·布朗

66

就我而言,是造成问题的xxxxxxxxxxxx.vcxproj.user文件。撞车后一片空白。我重命名它,问题就消失了。


24
删除了我的.user文件,它又可以工作了
。.SVN

7
就我而言,当我的机器崩溃时,我正在运行VS 2015-Community Edition。当我尝试打开解决方案时,该项目将无法加载,并抛出“缺少根元素”错误。删除计划的.user文件,允许项目再次加载。
加里

33

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

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

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

  • 文件>高级保存选项>选择适当的编码
  • 文件>另存为>保留文件名,单击保存按钮右侧的下拉箭头以选择一种编码

15

就我而言。我正在丢失指向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>

太棒了!!! 似乎取决于Visual Studio的版本。在VS 2012中,第一步是可行的,但在VS 2015中,我认为并非如此。
cerberus

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 

并在根项目文件夹中覆盖。

问题解决了!


就是这样。谢谢!
smoore4 '19

使用Visual Studio 2015对我有用。备份文件文件夹中还有其他原始文件和恢复文件。我删除了除最近的所有内容,然后按照上述步骤操作。我告诉VS重新加载项目,然后加载项目。
MapinTX '20

6

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


5

我在运行VS 2017时遇到这个问题,在构建时出现了``根元素丢失''的错误。为我解决了什么,是去工具> Nuget软件包管理器>软件包管理器设置>常规>清除所有Nuget缓存。完成此操作后,我再次运行了构建,并进行了修复。


1
MSVS 2019对于dotnet核心项目,我也有同样的问题。您的解决方案解决了该问题。
mtkachenko

2
太好了,为我使用VS 2019和.net core 3.1
JGilmartin

4

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


3

在我的情况下,文件C:\Users\xxx\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dfusrprf.xml中充满了NULL。

我删除了它; 它是在首次启动Dotfuscator时重新创建的,此后,恢复了正常状态。


由相同的..固定为找不到的文件删除了他,并自动创建了新文件。
Dimo

3

您也可以搜索文件。使用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)
            }
        }
}

3

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


2

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

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

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


在为“所有配置”添加C #define时遇到了同样的问题。似乎AtmelStudio不能针对所有配置执行此操作,即使Debug / Release包含相同的定义也是如此。
hfrmobile 2014年

2

我在运行Visual Studio 2013时遇到了蓝屏,当我重新启动时,我打算再次运行我的项目,但是我总是遇到这个难题。无论如何

使用Temp信息删除文件夹可解决此问题。在我的情况下,该项目是Windows Server,基本上,它会创建一个包含一些Tem信息的文件夹。

该文件夹是

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

内部存在一个具有项目名称的文件夹+一些生成的GUI服务。ServerHostLoader_Url_u2jn0xkgjf1th0a3i2v03ft15vj4x52i

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


2

就我而言,我升级到了VS2017,并希望使用自己的构建脚本(在我们使用VS2015时一直使用MSBuild 3.5)使用MSBuild 4构建所有项目。对于Windows桌面应用程序而言,MSBuild升级看起来不错,但对于具有紧凑框架的Windows CE,则将给我带来这个令人困惑的错误。恢复为Windows CE项目的MSBuild 3.5对我来说解决了这个问题。

顺便说一句,我确实在.csproj文件中包含BOM表,并在无法构建但无济于事的解决方案中将其删除用于所有项目。


2

在xamarin形式的项目中。我删掉了

.VS Project folder.
ProjectName.Android.csProj.User
ProjectName.Android.csProj.bak

2

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



1

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


1

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

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

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

我的解决方案是因为与Visual Studio相关的框架过旧或损坏。我找到这个是因为我试图通过Cocoa创建一个新的Mac解决方案,并且说“无法保存该解决方案”。然后,我尝试创建一个Android解决方案,并且运行良好。转到“查找器”和“转到”->“转到文件夹”,然后转到“库/框架”。我删除了与Xamarin相关的mono.framework和框架,因为我相信这些Xamarin框架已损坏。

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


1

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


0

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


0

我在Web API项目中遇到此问题。最终弄清楚它是在我的“ ///”方法中注释的。我将这些注释设置为自动生成API方法的文档。我的评论使它发疯了。我删除了所有回车符,特殊字符等。不能确定它不喜欢哪件事,但是可以。


0

就我而言,RDLC文件与资源文件(.resx)一起使用时,出现了此错误,因为我没有为rdlc报告创建相应的resx文件。

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

\rep
\rep\myreport.rdlc
\rep\App_LocalResources\myreport.rdlc.resx

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


0

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

示例(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>

0

就我而言,我使用的是带有水晶报表的vs 2010。内部异常显示根元素丢失错误。转到内部消息中提供的目录,例如C:\ Users \ sam \ AppData \ Local \ dssms \ dssms.vshost.exe_Url_uy5is55gioxym5avqidulehrfjbdsn13 \ 1.0.0.0,并确保user.config是正确的XML(出于某些原因我是空白的)。



0

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

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

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


0

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

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


0

这些解决方案中没有一个解决我的问题。

就我而言,我完成了工作,然后关闭了计算机。第二天,我无法编译我的项目。我尝试了其中一些解决方案,但我意识到我所有的项目都无法正常工作。

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

Visual Studio 2017

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.