无法加载项目文件。缺少根元素
Posted
技术标签:
【中文标题】无法加载项目文件。缺少根元素【英文标题】:The project file could not be loaded. Root element is missing 【发布时间】:2019-12-24 17:25:36 【问题描述】:我正在尝试在 Jenkins 中使用VS Build tools 2017
构建一个 dotnet 3.5 项目解决方案文件。该项目使用 DotNet 3.5 的 MSBuild 编译得很好,但是当我尝试使用 MSBuild Engine Version 15.9.21+g9802d43bc3
进行相同的活动时,它正在抛出 MSBUILD : error MSB4025: The project file could not be loaded. Root element is missing
。
这是我用来编译 dotnet 3.5 项目的命令。
cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
MSBuild.exe "%WORKSPACE%\WBR.sln" /p:Configuration=Debug /p:DeployOnBuild=True /p:AllowUntrustedCertificate=True /p:CreatePackageOnPublish=True
请在下面找到 Jenkins 执行日志
C:\Users\Netadmin\.jenkins\jobs\FCRS\jobs\FCRS_VS\workspace>cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin>MSBuild.exe "C:\Users\Netadmin\.jenkins\jobs\FCRS\jobs\FCRS_VS\workspace\WBR.sln" /p:Configuration=Debug /p:DeployOnBuild=True /p:AllowUntrustedCertificate=True /p:CreatePackageOnPublish=True
Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
Build started 8/19/2019 6:38:12 PM.
MSBUILD : error MSB4025: The project file could not be loaded. Root element is missing.
Build FAILED.
MSBUILD : error MSB4025: The project file could not be loaded. Root element is missing.
0 Warning(s)
1 Error(s)
下图是我的詹金斯工作区目录。
任何帮助都会很棒。
【问题讨论】:
看起来这个项目必须从 vs2010 迁移到 vs17 如果这必须工作。如果有人能证实这一点,那就太好了。 据我所知,有几种可能会导致这种错误。但现在我无法确定它属于哪种情况。您可以尝试使用较旧的 msbuild 版本,路径为:C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
,或者您可以在配置构建工具包时检查是否安装了相应的 C# 工作负载。
嗨@LanceLi-MSFT。如问题中所述,3.5 的 msbuild 成功编译代码,但 vs17 的 msbuild 因上述错误而失败。注意:这是一个 3.5 项目。你能告诉我哪些工作负载适合这种情况吗?我会检查它们是否存在于我的系统中。
昨天还没来得及测试build tools 2017能否很好的构建.net 3.5项目,今天测试后,我认为在正常情况下(典型的.net控制台、wpf、web应用) ,无需迁移它们。由于您尝试在命令行中构建它们而不是通过 vs 加载它们。
但我正在从命令行使用 vs17 的构建工具。 @LanceLi-MSFT
【参考方案1】:
当您使用命令msbuild xx.sln
时,您实际上是在构建属于该解决方案的项目。
根据您的错误消息:项目的项目文件之一 (xx.csproj) 未加载导致 msbuild 无法很好地读取 xml 内容。你可以试试:
1.打开xx.csproj文件,确认其格式为:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
</Project>
2.用UTF-8 encoding
保存,避免BOM乱码
3.备份然后删除.suo和.csproj.user文件
4.否则,由于是asp.net mvc项目,你可以通过vs2017创建一个同名的asp.net mvc项目,将所有源文件复制到新项目中,将项目迁移到VS2017
5.确保您的构建工具包安装了 Web 开发工作负载:
6. 由于从 .net3.5 使用 msbuild 时效果很好,因此您可以在服务器中安装 .net framework 3.5,并在构建 .net 3.5 项目时尝试从 C:\Windows\Microsoft.NET\Framework64\v3.5
而不是 C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin
调用 msbuild vs2010.
【讨论】:
嗨@Lance,我想用sonarqube分析dotnet项目。问题是 sonarscanner 与 vs15 或 vs17 的 msbuild 兼容。 @KrisT 你试过 1.2.3 吗?如果不行,可以新建一个vs2017空项目,将vs2010项目迁移到vs2017(这样总是行)。或者您可能需要分享 xx.csproj 的内容,以便我们更深入地检查问题的原因。 @KrisT 嗨,问题仍然存在吗? 我已经要求开发者分享项目文件。但我有一个疑问。正如您在图片中看到的,此解决方案文件中有 5-6 个模块。我应该工作并显示所有项目文件吗? 这是peoject文件,不是上面脚本中的解决方案文件。我只是想检查一下格式,所以propertygroup和itemgroup中的细节可以忽略。以上是关于无法加载项目文件。缺少根元素的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot 和 Gradle 多模块项目,无法正确加载依赖项
Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法
VS2019安装sharp7-full-1.0.0出现缺少根元素?
错误“模块根文件夹中缺少文件 google-services.json。没有它,Google 服务插件无法运行”[重复]