【问题标题】:MSBUILD Error MSB4025 in TeamCity build step for Visual StudioVisual Studio 的 TeamCity 构建步骤中的 MSBUILD 错误 MSB4025
【发布时间】:2014-05-24 01:30:58
【问题描述】:

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

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(内部版本 29939)的专用 CI 服务器上。此服务器上还有其他几个成功运行的构建。

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

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

有什么建议吗?

【问题讨论】:

    标签: msbuild teamcity


    【解决方案1】:

    我刚刚解决了这个问题。

    在 Test.sln 文件中查找未关闭的 Project 或 EndProject 标记。对我们来说,EndProject 丢失了,它在 teamcity 上中断了,但在 Visual Studio 中没有问题。

    【讨论】:

    • 有解析.sln文件的工具:stackoverflow.com/questions/707107/…我用过slntools.codeplex.com,任何命令都会告诉你.sln文件中缺少什么
    • 我还注意到,如果您尝试使用 MSBuild 运行它,您会收到一条更有帮助的错误消息。
    • 查找 XML 输入错误(通常在 XML 标记之外)。或者缺少标签。您可以通过 XML Validator 运行它来检查。
    【解决方案2】:

    似乎任何数量的根本原因都会出现 TeamCity 错误消息。在我的情况下,出现问题是因为 GlobalSection(NestedProjects) 部分中的一行引用了一个与解决方案文件中定义的任何项目都不相关的项目 Guid。

    与上一篇文章一样,我在 Visual Studio 中构建时没有任何问题。我只收到了一条更有帮助的错误消息,让我发现使用 msbuild 构建时真正的问题是什么。

    请参阅 https://therightjoin.wordpress.com/2014/07/04/msb4025-the-project-file-could-not-be-loaded-data-at-the-root-level-is-invalid-error-when-building-ssdt-project-in-teamcity 以获取另一个示例,以及使用 msbuild 帮助确定真正问题的地方。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 这解决了我的问题。我最终安装了我需要的构建工具版本
        【解决方案5】:

        在我的情况下,合并后,在 .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
        

        部分。说白了就是合并后多了几行。因此,如果您已合并,请手动比较两个解决方案文件。您可以从两个文件中的总行号开始。

        【讨论】:

          【解决方案6】:

          另一种情况

          我们有一个空行 - 所以请确保删除所有空行!

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

          【讨论】:

            【解决方案7】:

            我在 Jenkins 上遇到了同样的错误。结果发现根 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 的线索。

            【讨论】:

              【解决方案8】:

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

              【讨论】:

              • 这解决了我的问题。我最终安装了我需要的构建工具版本
              【解决方案9】:

              使用MSBuild 找出根本问题:

              $> msbuild mysolution.sln
              

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

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

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

              【讨论】:

                猜你喜欢
                • 2017-02-01
                • 1970-01-01
                • 2011-08-13
                • 1970-01-01
                • 2020-06-08
                • 2014-09-13
                • 2012-12-28
                • 2012-09-24
                • 2020-03-24
                相关资源
                最近更新 更多