如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?
Posted
技术标签:
【中文标题】如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?【英文标题】:How to fix "Root element is missing." when doing a Visual Studio (VS) Build? 【发布时间】:2011-04-15 21:48:06 【问题描述】:知道我应该在我的解决方案中查看什么文件吗?
实际上,在使用“Make VS 2008”命令时,我在“Visual Build Pro”中收到此错误消息。这个命令在构建其他解决方案(比如大约 20 个)时工作得很好,我不确定为什么我的会收到错误。
任何帮助将不胜感激。 :)
我正在使用 VS 2008 和 Visual Build Pro 6.7。
【问题讨论】:
【参考方案1】:就我而言,是 xxxxxxxxxxxx.vcxproj.user 文件导致了问题;崩溃后它是空白的。我重命名了它,问题就消失了。
【讨论】:
删除了我的.user
文件,它又可以工作了。在 SVN 更新后它也是空白的
就我而言,当我的机器崩溃时,我正在运行 VS 2015 - Community Edition。当我尝试打开我的解决方案时,项目无法加载并抛出“缺少根元素”错误。删除 .user 文件以允许项目再次加载。
谢谢,我的问题也通过删除 XXXX.csproj.user 文件并重新加载解决方案得到了解决【参考方案2】:
确保任何 XML 文件(或任何将被 Visual Studio 解释为 XML 文件的文件)都具有正确的 XML 结构 - 即一个根元素(具有任何名称,我在示例中使用了 rootElement
):
<?xml version="1.0"?>
<rootElement>
...
</rootElement>
【讨论】:
我的解决方案中有数千个文件。有什么特殊的扩展可以看吗? @Gerhard Weiss - .xml、.config、.xsd、.xsl 将是一个好的开始。如果您有任何 Xhtml 文件,它们也是不错的选择。我对您的项目以及您在其中拥有什么样的文件一无所知,所以我无法真正告诉您。但是,请查看错误窗口中的错误 - 它应该会告诉您是哪个文件导致了问题。 短暂工作,但不得不使用 Kahlil 的答案。【参考方案3】:当 BOM 出现时,您还会收到“缺少根元素”:)。 BOM = 字节顺序标记。这是一个额外的字符,当使用错误的编码保存文件时,它会添加到文件的开头。 在使用 XML 文件时,有时会在 Visual Studio 中发生这种情况。您可以编写一些代码以将其从所有文件中删除,或者如果您知道它是哪个文件,您可以强制 Visual Studio 使用特定编码(utf-8 或 ascii IIRC)保存它。
如果你在 VS 以外的编辑器中打开文件(试试 notepad++),你会在 之前看到两个有趣的字符。 xml声明。
要在 VS 中解决此问题,请在 VS 中打开文件,然后根据 VS 的版本进行操作
文件 > 高级保存选项 > 选择适当的编码 文件>另存为>保留文件名,点击保存按钮右侧的下拉箭头选择编码【讨论】:
【参考方案4】:在我的情况下。我得到 缺少元素错误 指向 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>
【讨论】:
太棒了!!!似乎这取决于视觉工作室的版本。在 VS 2012 中,第一步是可行的,但在 VS 2015 中,我不这么认为。【参考方案5】:此错误是由损坏的 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
并覆盖根项目文件夹。
问题解决了!
【讨论】:
就是这样。发送! 这对我使用 Visual Studio 2015 有效。备份文件夹中还有其他原始文件和恢复文件。我删除了除最新的以外的所有内容,然后按照上述步骤操作。我告诉VS重新加载项目并加载项目。【参考方案6】:我的项目没有加载并给了我一个Root Element Missing
error。我刚刚删除了****.csproj.user
文件并重新加载了它。问题就这样解决了
【讨论】:
【参考方案7】:在我的例子中,当我打开 .csproj
文件时,它是空的,所以我去了我之前在 git 中提交的内容,复制了该文件的内容并将其粘贴到我当前的 .csproj
文件中。之后我删除了.csproj.user
文件,重新加载了我的项目,一切又开始工作了。
【讨论】:
【参考方案8】:我在运行 VS 2017 时遇到了这个问题,在构建时我收到了“缺少根元素”的错误。为我解决的方法是工具> Nuget 包管理器> 包管理器设置> 常规> 清除所有Nuget 缓存。之后我再次运行构建并修复它。
【讨论】:
我在MSVS 2019
中遇到了同样的问题,用于 dotnet 核心项目。您的解决方案解决了这个问题。
太棒了,为我使用 VS 2019 和 .net core 3.1【参考方案9】:
我遇到了同样的错误。显示错误 Microsoft.Data.Entity 无法加载缺少的根元素。当我从 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中删除该文件并再次打开我的解决方案时,我的问题就解决了。一切正常
【讨论】:
【参考方案10】:您也可以搜索该文件。使用 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)
【讨论】:
【参考方案11】:就我而言,.csproj 已更改为编码格式。我在 Git(团队资源管理器)中撤消了对 csproj 的更改并重新加载了项目文件。这解决了问题。
【讨论】:
【参考方案12】:在我的例子中,文件 C:\Users\xxx\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dfusrprf.xml
充满了 NULL。
我删除了它;它在 Dotfuscator 首次启动时重新创建,之后恢复正常。
【讨论】:
由相同的.. 修复,然后找到未找到的文件将其删除,并自动创建新文件。【参考方案13】:当您编辑某些项目工具链设置 Atmel Studio 6.1.2730 SP2 时,有时会出现此错误。
在我的情况下,我尝试在配置中选择“所有配置”来编辑项目属性 > 工具链 > 链接器 > 常规设置。当我选中或取消选中某个设置时,会弹出一个包含错误的对话框。但是,我发现如果我一次只对一个构建配置进行相同的编辑;即仅选择“调试”或“发布”而不是“所有配置”。
有趣的是,即使选择了“所有配置”,我后来也能够编辑相同的链接器设置。我不知道我的项目中发生了什么变化使这成为可能。
【讨论】:
刚刚在为“所有配置”添加 C #define 时遇到了同样的问题。似乎 AtmelStudio 无法对所有配置执行此操作,即使 Debug/Release 包含相同的定义。【参考方案14】:我在运行 Visual Studio 2013 时出现蓝屏,当我重新启动时,我打算再次运行我的项目,但我总是遇到这个 headius 错误。 无论如何
使用临时信息删除文件夹修复此问题。 在我的情况下,该项目是一个 Windows 服务器,基本上它创建一个包含一些 Tem 信息的文件夹。
文件夹是
C:\Users\User_NAME\AppData\Local\NAme_OF_THeProject
在 Exist a Folder 中存在一个带有项目名称的文件夹+一些生成的 GUI Service.ServerHostLoader_Url_u2jn0xkgjf1th0a3i2v03ft15vj4x52i
这是我删除的文件夹,现在我可以再次运行项目。
【讨论】:
【参考方案15】:在我的情况下,我升级到 VS2017,并希望使用我的构建脚本(当我们使用 VS2015 时一直使用 MSBuild 3.5)构建所有带有 MSBuild 4 的项目。 MSBuild 升级对于 Windows 桌面应用程序来说似乎很好,但是对于具有紧凑框架的 Windows CE 的升级程序会给我这个令人困惑的错误。为 Windows CE 项目恢复到 MSBuild 3.5 解决了我的问题。
顺便说一句,我确实在 .csproj 文件中有 BOM,并为解决方案中的所有项目删除了它们,该解决方案无法构建但没有帮助。
【讨论】:
【参考方案16】:在 xamarin 表单项目中。我删了
.VS Project folder.
ProjectName.android.csProj.User
ProjectName.Android.csProj.bak
【讨论】:
【参考方案17】:就我而言,我收到了这样的消息: See this picture
我刚刚在项目文件(.csproj)中注释了下面的代码片段,问题就解决了。
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
【讨论】:
【参考方案18】:在我的情况下,在尝试发布应用程序时未加载 xxxx.pubxml.user。我删除了文件并重新启动了 Visual Studio,然后创建了一个新的配置文件来发布它,问题解决并成功发布。
【讨论】:
【参考方案19】:嘿,我在 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 并重新安装。 现在一切正常!
【讨论】:
【参考方案20】:就我而言,我只是重命名了 .csproj.user 并重新启动了 Visual Studio 并打开了项目。它自动创建了另一个 .csproj.user 文件,该解决方案对我来说效果很好。
【讨论】:
【参考方案21】:我只是通过转到源代码管理资源管理器并选择问题项目来解决此问题,右键单击并选择高级菜单下的获取特定版本选项。然后选择类型作为最新版本并勾选以下两个复选框并单击获取按钮。然后我刷新了解决方案,我的项目又恢复了,问题消失了。请注意,这可能会覆盖您的本地项目,因此您当前的更改可能会丢失。因此,如果您的本地副本没有任何问题,那么您可以试试这个。希望对你有帮助
【讨论】:
【参考方案22】:我在一个 Web API 项目中遇到了这个问题。最后发现是在我的“///”方法cmets中。我将这些 cmets 设置为自动生成 API 方法的文档。我的 cmets 中的某些东西让它变得疯狂。我删除了所有的回车符、特殊字符等。不太确定它不喜欢哪个东西,但它确实有效。
【讨论】:
【参考方案23】:在我的情况下,RDLC 文件与资源文件 (.resx) 一起使用,我遇到了这个错误,因为我没有为我的 rdlc 报告创建对应的 resx 文件。
我的解决方案是以这种方式在 App_LocalResources 中添加文件 .resx:
\rep
\rep\myreport.rdlc
\rep\App_LocalResources\myreport.rdlc.resx
【讨论】:
【参考方案24】:我遇到了几次大规模的 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
【讨论】:
【参考方案25】:就我而言,我收到此错误是因为 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>
【讨论】:
【参考方案26】:就我而言,我使用的是带有水晶报告的 vs 2010。 Innerexception 显示根元素丢失错误。转到内部消息中给出的 C:\Users\sam\AppData\Local\dssms\dssms.vshost.exe_Url_uy5is55gioxym5avqidulehrfjbdsn13\1.0.0.0 之类的目录,并确保 user.config 是正确的 XML(由于某种原因我的为空白)。
【讨论】:
【参考方案27】:删除 .user 文件正是为我解决问题的方法。办公室附近的雷击关闭了我的 PC 并损坏了我的 .user 文件并且项目无法加载。我在 Notepad++ 中打开了文件,结果“空格”是 [NULL] 字符。删除了 .user 文件并加载了文件!
来源https://forums.asp.net/t/1491251.aspx?Can+t+load+project+because+root+element+is+missing+
【讨论】:
【参考方案28】:我在 Xamarin Forms 项目中遇到了同样的问题。 ios 项目不可用,我无法重新加载该项目。我一直在寻找不需要卸载任何东西的解决方案。
我从这个博客得到的答案: https://dev.to/codeprototype/xamarin-form-application-failed-to-load-android-project-root-element-missing--27o0
因此,无需卸载任何东西,您可以删除 .csproj.user 文件(或重命名),以便 Visual Studio 再次创建该文件。为我工作了两次。
【讨论】:
【参考方案29】:在我的情况下,由于在 Visual Studio 保持打开状态时关闭了我的 PC,因此导致 csproj.user 文件保存为空。幸好我已经备份了,所以我只是从 csproj.user 复制了所有 xml 并粘贴到我受影响的项目 csproj.user 文件中,所以它工作得很好。
此文件仅包含构建设备信息等。
【讨论】:
【参考方案30】:这些解决方案都没有解决我的问题。
就我而言,我完成了工作并关闭了计算机。在我无法编译我的项目后的第二天。我尝试了其中一些解决方案,但我意识到我的所有项目都不起作用。
为了修复它,我重新安装了 .net core Framework。
Visual Studio 2017
【讨论】:
以上是关于如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?的主要内容,如果未能解决你的问题,请参考以下文章