Dotnet restore在VSTS上运行MyProj.csproj时抛出“文件类型未被识别”的错误。

5

我正在制作dotnet Core项目的构建管道。我的构建脚本的一部分执行dotnet restore命令。我这样做:

dotnet restore C:/Projects/MyProj/src/MyProj/MyProj.csproj

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

dotnet restore D:/a/1/s/src/MyProj/MyProj.csproj

但是我遇到了错误:

错误:无效的输入 '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"
}

文件夹结构如下:

   Root/
       build.cake
       build.ps1
       global.json
       src/
          MyProj.sln
          MyProj/
            MyProj.csproj
            *.cs
          MyProj.Tests/
            MyProj.Tests.csproj
            *.cs

这个解决方案是在VS2017中创建的,所以它是最新的csproj文件格式。

我还应该检查什么?

1个回答

10

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

共享运行时主机(dotnet.exe)的版本相同,不同之处在于还需要安装更新的CLI(位于dotnet.exe所在目录的sdk子目录中)。


我想这个东西应该已经安装在构建代理上了...但让我试一下。 - trailmax
是的,我应该意识到已安装的 SDK 与我正在编译的不同。一旦我安装了 SDK,我就得到了结果。谢谢! - trailmax
我认为这个是正确的,但作为一个新手VSTS,我不确定该怎么做。这个答案有所帮助:https://dev59.com/rVgR5IYBdhLWcg3wJqi7#42969311 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接