代码之家  ›  专栏  ›  技术社区  ›  XDS

生成服务器(而不是开发计算机)上的msbuild错误

  •  0
  • XDS  · 技术社区  · 6 年前
    "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
    

    为什么只有构建服务器出错,而开发机器却没有?

    1 回复  |  直到 6 年前
        1
  •  1
  •   XDS    6 年前

    原来.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文件现在应该正常了。你可以把它交给你的分行。