MSBUILD在Visual Studio的TeamCity构建步骤中错误MSB4025

时间:2014-04-10 11:12:21

标签: msbuild teamcity

当我运行我的TeamCity构建时,唯一的构建步骤是运行器类型Visual Studio(sln),我收到以下错误:

C:\TeamCity\buildAgent\work\4978ec6ee0ade5b4\Test\Code\Test.sln(2, 1): error MSB4025: The project file could not be loaded. Data at the root level is invalid. Line 2, position 1.

这是在运行TeamCity Professional 8.1.1(build 29939)的专用CI服务器上。此服务器上还有其他几个成功运行的版本。

奇怪的是,相同的构建在我的开发机器上的TeamCity上成功运行。我跟着an answer查了一个类似的问题,然后复制了指定的文件夹,但这没有用。

我确定项目/解决方案文件无效,因为除了在我的开发框上运行的构建之外,我已经在Visual Studio中打开了解决方案并在那里构建它没有任何问题。

有什么建议吗?

8 个答案:

答案 0 :(得分:24)

我刚修好了。

在Test.sln文件中查找未关闭的Project或EndProject标记。对于我们来说,EndProject缺失了,它在团队城市中破裂,但在Visual Studio中没有问题。

答案 1 :(得分:4)

在我们的例子中,它是解决方案文件中的重复项目引用(由近似同时提交和自动合并引起)。

答案 2 :(得分:1)

在我的情况下,在合并之后,在.sln文件中,它是

下的行不匹配
GlobalSection(NestedProjects) = preSolution  

{6B971E15-6B61-4AA8-9B93-9639C23269C3} = {9A14E7EF-3FA1-4B9A-B413-C550B3E5AC62}

{54D14F01-D576-4DE6-9404-D21AD0DC4916} = {9A14E7EF-3FA1-4B9A-B413-C550B3E5AC62}

... (was some extra entry here )
...

 EndGlobalSection

部分。简单来说,合并后添加了一些额外的行。因此,如果您已合并,请手动比较两个解决方案文件。您可以从两个文件中的总行数开始。

答案 3 :(得分:1)

在另一个案例中

我们有一个空行 - 所以要确保删除任何空行!

希望这对其他人也有帮助!

答案 4 :(得分:1)

我和詹金斯有同样的错误。事实证明根Jenkins文件夹设置为C:\ Program Files(x86)\并且它没有对bin和obj目录的写访问权。

错误: 错误MSB4025:无法加载项目文件。根级别的数据无效。

我以管理员身份启动了cmd并运行了这个: " C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe" " C:\ Program Files(x86)\ Jenkins \ workspace \ BuildBI_1 \ Reports \ Test \ ReportsTests.sln" / t:Build / p:RunOctoPack = true

这给了我关于无法写入bin和obj的线索。

答案 5 :(得分:0)

在我们的情况下,问题是指定未在该计算机上安装的ToolsVersion。 (VS2015有14但默认没有VS2017)

答案 6 :(得分:0)

这对我有用 - 您可以安装Build Tools for Visual Studio 2017,确保选择C ++工具,Windows 10 SDK和MSBuild以及您的设置。

答案 7 :(得分:0)

使用 MSBuild 确定潜在问题:

$> msbuild mysolution.sln

用正确的错误行号给了我这个美丽:

enter image description here

如果无法像从命令行/powershell 那样访问 msbuild,请尝试查找 VisualStudio 附带的 MSBuild.exe,例如C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64\MSBuild.exe

VisualStudio 本身似乎非常“容忍”解决方案文件中的错误/不一致,因此在 VS 中打开它并不能保证 sln 文件是正确的。