【问题标题】:Visual studio team services build .net core 1.1Visual Studio 团队服务构建.net core 1.1
【发布时间】:2017-05-31 03:37:34
【问题描述】:

我正在尝试在 vsts 上构建一个 .net core 1.1 项目。该项目是在vs2017中开发的,它使用csproj而不是project.json。我尝试了多种选项来使用托管代理(windows 和 linux)在 vsts 上构建 id。

我已经尝试了以下构建步骤

Visual Studio 构建

设置为使用 vs 2017 但我收到警告“未找到 Visual Studio 版本 '15.0'。正在寻找最新版本。”然后我得到错误,因为它不能包含 .net 核心包。

.NET Core(预览版)

找不到 project.json。当我将它设置为使用 csproj 文件时,它会给出错误“无法识别文件类型”

命令构建步骤

我尝试使用命令构建步骤运行命令。 “dotnet build”给出了找不到 project.json 文件的错误。

有人在 vsts 上使用 csproj 构建 dotnet 1.1 可以帮助我怎么做吗?

【问题讨论】:

  • 这里也一样。如果我找到解决方案,会回复您。
  • .Net CLI for .csproj 项目文件格式和 msbuild 引擎仍处于预览版,它将在功能中提供。设置本地构建代理很容易,您现在可以使用本地构建代理。

标签: azure-devops .net-core


【解决方案1】:

在 VSTS 中,您需要添加 netcore exists 作为需求。

  1. 转到您的构建定义
  2. 单击选项选项卡
  3. 添加需求netcore exists

【讨论】:

    【解决方案2】:

    就我而言,我有一个 .NET Core Web 应用程序和四个库项目,因为我使用的是 EF 6,所以它们都针对完整的框架。

    我在这里尝试了所有建议,但都没有奏效。在 Hosted Agent 2017 上使用 Visual Studio Build 构建会构建项目,但不会输出任何二进制文件。上面的所有选项也都生成了,但没有生成输出文件。

    阅读后,我发现获取输出文件的唯一方法是运行dotnet publish,但这会产生构建错误,因为 nuget 无法很好地恢复包并且 msbuild 无法找到它们。在厌倦了一整天的尝试之后,我随便启用了 VS Buid 任务上的“恢复 Nuget 包”,虽然它说它已被弃用,但这似乎解决了我的问题。

    【讨论】:

      【解决方案3】:

      在 Visual Studio Team Services 中,转到 Build & Release > Builds 并点击 Edit 以获取您要更新的构建定义 p>

      导航到选项标签,将默认代理队列更改为Hosted VS2017,然后保存。

      【讨论】:

      • 这对我有用,无需运行自定义 PowerShell 脚本。
      • 注意:如果找不到此选项,则必须打开新的构建编辑器(仍处于预览状态)。
      • 如果您使用私有队列,请查看我的回答:stackoverflow.com/a/51925783/5504438
      【解决方案4】:

      扩展@Nikolay Balakin 的回答,确实尚不支持使用*.csproj 的.NET Core 项目。

      您可以通过自己在托管构建环境上安装最新的 .NET 核心来解决此问题。

      这将允许运行 dotnet restore、dotnet build、dotnet publish 和 dotnet test。

      使用Inline powershell extension 运行脚本。您可以链接到脚本,或将文本粘贴到内联中。我正在运行一个已签入项目的脚本。

      似乎每个 powershell 脚本都会在自己的环境中运行,因此路径等不会在脚本之间持续存在,因此需要将安装步骤和构建步骤合并到一个脚本中。

      您需要从github 复制dotnet installation script 并将您自己的构建命令添加到末尾。

      我知道这不是一个长期的解决方案,但我们通过假设 VSTS 将在不久的将来支持 *.csproj 文件来证明它是合理的,我们将转换为使用官方构建任务。

      这是一个示例 powershell 脚本,显示了安装脚本的最后一行,以及最后的自定义构建命令。

      ...
      ...
      Say "Installation finished"
      # this is the end of the downloaded script, add your steps after here.
      
      Say "Running dotnet restore AdminPortal\AdminPortal.csproj"
      dotnet restore AdminPortal\AdminPortal.csproj
      
      Say "dotnet publish AdminPortal\AdminPortal.csproj --configuration Release"
      dotnet publish AdminPortal\AdminPortal.csproj --configuration Release
      
      Say 'Zipping publish file'
      
      $source = $env:BUILD_REPOSITORY_LOCALPATH
      $source = $source + '\AdminPortal\bin\Release\net461\publish'
      
      $destination = $env:BUILD_REPOSITORY_LOCALPATH
      $destination = $destination + '\AdminPortal\bin\Release\net461\publish.zip'
      
      Add-Type -assembly "system.io.compression.filesystem"
      [io.compression.zipfile]::CreateFromDirectory($source, $destination)
      
      Say "Publish finished"
      
      dotnet test "AdminPortal.Tests\AdminPortal.Tests.csproj"
      
      Say "Test finished"
      
      exit 0
      

      【讨论】:

      • 感谢您的解决方案!它就像一个魅力!我目前正在运行最新的 dotnet core 1.1.1,并且 GitHub 上提供的脚本能够正确下载支持来自 VS2017 的新 .csproj 的 dotnet。有了它,恢复、构建和测试例程就完美地工作了!
      【解决方案5】:

      您可以手动下载 dotnet SDK 并从命令行运行dotnet build。 所以它可能是这样的:

      1. 内联 PowerShell 步骤(我使用了 Peter Groenwegen 的 Inline Powershell extension):

        Invoke-WebRequest https://go.microsoft.com/fwlink/?linkid=837977 -OutFile $(System.DefaultWorkingDirectory)\dotnet.zip
        
      2. 提取文件步骤:

        From: $(System.DefaultWorkingDirectory)\dotnet.zip
        To: $(System.DefaultWorkingDirectory)\dotnet
        
      3. 恢复包:

        $(System.DefaultWorkingDirectory)\dotnet\dotnet.exe restore
        

      ...等等

      但是有一些限制——您还没有在构建代理机器上安装 .Net Core 1.1,因此某些功能可能无法使用。至少 dotnet test 会失败,因为它需要适当的 .Net Core 运行时。也许还有其他一些功能。

      【讨论】:

        【解决方案6】:

        根据这个问题 .NET Core 项目使用 *.csproj 文件尚不支持:

        https://github.com/Microsoft/vsts-tasks/issues/3311

        "如果您使用托管代理 - 那么那里的工具只能工作 带有 project.json 文件”

        我已经尝试过这里的教程,但它们似乎也已经过时了(我什至无法在我的机器上安装 tfx-cli): http://mattvsts.blogspot.nl/2016/11/start-building-aspnet-core-11-with-tfs.html

        【讨论】:

        • 希望尽快修复。同时我也运行我自己的构建服务器。
        • @VeryEvilBetty 该教程不适用于托管构建代理。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        • 2017-09-18
        • 1970-01-01
        相关资源
        最近更新 更多