【问题标题】:MSBuild errors out on build server but not on dev-machinesMSBuild 错误在构建服务器上但不在开发机器上
【发布时间】:2018-10-22 14:42:02
【问题描述】:
"someSolutionFile.sln: error MSB4025: The project file could not be loaded. Data at the root level is invalid. Line 2, position 1"

出错的 MSBuild 调用非常简单:

<MSBuild
  Projects="someSolutionFile.sln"
  Targets="someProject.csproj"
  Properties="..."
  BuildInParallel="false"
/>

开发机器和构建服务器使用完全相同的 msbuild 版本:

Microsoft (R) Build Engine version 15.8.169+g1ccb72aefa for .NET Framework

为什么只有构建服务器出错而不是开发机器出错?

【问题讨论】:

    标签: c# msbuild


    【解决方案1】:

    事实证明,.sln 上的合并之一意外删除了 [endproject] 部分。该错误消息确实误导了错误:

     Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8DCAA708-E9BE-4C30-B267-F60B2F36C031}"
        ProjectSection(SolutionItems) = preProject
            Performance1.psess = Performance1.psess
        EndProjectSection
     EndProject
     Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "[some project 1]", "[some project 1].csproj", "{2CD27468-B1D4-4380-BF06-78CCDDCE53C2}"
     EndProject
     Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "[some project 2]", "[some project 2].csproj", "{0DB85F19-4E9E-417D-828D-D44566554B5F}"
     EndProject  <--- this was missing
    

    如果你有这样的问题,Visual Studio 不会抱怨。简单地重新规范化 .sln 文件:

    1. 向解决方案添加一个虚拟的新项目并将解决方案作为一个整体保存
    2. 删除刚刚添加的虚拟项目并重新保存解决方案

    .sln 文件现在应该是健全的。你可以将它提交给你的分支。

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 2021-07-05
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多