Dotnet恢复MyProj.csproj在VSTS上显示"无法识别文件类型"

tra*_*max 5 .net build .net-core azure-pipelines

我正在为dotnet Core项目制作构建管道.部分构建脚本执行dotnet restore.我是这样做的:

dotnet restore C:/Projects/MyProj/src/MyProj/MyProj.csproj
Run Code Online (Sandbox Code Playgroud)

它在本地恢复没有问题.当我将相同的脚本推送到VSTS构建服务器时,在日志中我看到执行如下:

dotnet restore D:/a/1/s/src/MyProj/MyProj.csproj
Run Code Online (Sandbox Code Playgroud)

但后来我得到错误:

错误:输入'D:/a/1/s/src/MyProj/MyProj.csproj'无效.无法识别文件类型.

我究竟做错了什么?为什么它在本地工作而不是在VSTS上工作.

我在本地使用与VSTS相同版本的dotnet.exe:

版本:1.1.0
建立:928f77c4bc3f49d892459992fb6e1d5542cb5e86

我有一个global.json文件src夹在文件夹之外:

{
  "projects": ["src"],
  "sdk": {
    "version": "1.1.0"
  },
  "packages": "packages"
}
Run Code Online (Sandbox Code Playgroud)

文件夹结构如下:

   Root/
       build.cake
       build.ps1
       global.json
       src/
          MyProj.sln
          MyProj/
            MyProj.csproj
            *.cs
          MyProj.Tests/
            MyProj.Tests.csproj
            *.cs
Run Code Online (Sandbox Code Playgroud)

解决方案是在VS2017中创建的,因此这是最新的csproj文件格式.

我还应该检查什么?

Mar*_*ich 10

由于该项目使用VS 2017和"已发布的".NET CLI工具,因此您还需要使用Hosted VS2017代理队列进行构建,以便构建将在安装了必要工具的代理上运行.

共享运行时host(dotnet.exe)的版本是相同的,区别在于还需要安装较新的CLI(sdk位于目录的子目录中dotnet.exe).