Visual Studio团队服务构建.net核心1.1

时间:2017-01-16 10:15:17

标签: azure-devops .net-core

我正在尝试在vsts上构建一个.net核心1.1项目。该项目是在vs2017中开发的,它使用csproj而不是project.json。我已尝试使用托管代理(Windows和Linux)在vsts上构建id的多个选项。

我尝试了以下构建步骤

Visual Studio build

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

.NET Core(预览)

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

命令构建步骤

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

任何使用csproj构建dotnet 1.1的人都可以帮助我完成这些操作吗?

6 个答案:

答案 0 :(得分:20)

在Visual Studio Team Services中,转到构建&发布> 构建,然后点击修改,了解您要更新的构建定义

enter image description here

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

Hosted VS2017

答案 1 :(得分:4)

您可以手动下载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
    
  4. ......等等

    但是有一些限制 - 您仍然没有在构建代理计算机上安装.Net Core 1.1,因此某些功能可能无法正常工作。至少dotnet test将失败,因为它需要适当的.Net Core运行时。也许还有其他一些功能。

答案 2 :(得分:2)

延伸到@Nikolay Balakin的答案,使用*.csproj的.NET核心项目尚不支持。

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

这样可以投放dotnet restoredotnet builddotnet publishdotnet test

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

enter image description here

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

您需要从dotnet installation script复制github并在最后添加您自己的构建命令。

我知道这不是一个长期解决方案,但我们通过假设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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

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

阅读我发现获取输出文件的唯一方法是运行dotnet publish,但这会产生构建错误,因为nuget不能很好地恢复包,而msbuild无法找到它们。在厌倦了在一整天之内努力使它工作之后,随便我启用了“恢复原始包裹”#34;关于VS Buid的任务,尽管它已经被弃用了,但它似乎已经解决了我的问题。

答案 5 :(得分:0)

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

  1. 转到您的构建定义
  2. 单击选项选项卡 position of option tab
  3. 添加需求netcore exists how to input the demand netcore exists