我正在尝试在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的人都可以帮助我完成这些操作吗?
答案 0 :(得分:20)
在Visual Studio Team Services中,转到构建&发布> 构建,然后点击修改,了解您要更新的构建定义
导航至选项标签,将默认代理队列更改为托管VS2017 ,然后保存。
答案 1 :(得分:4)
您可以手动下载dotnet SDK并从命令行运行dotnet build
。
所以它可能是这样的:
内联PowerShell步骤(我使用了Peter Groenwegen的Inline Powershell extension):
Invoke-WebRequest https://go.microsoft.com/fwlink/?linkid=837977 -OutFile $(System.DefaultWorkingDirectory)\dotnet.zip
提取文件步骤:
From: $(System.DefaultWorkingDirectory)\dotnet.zip
To: $(System.DefaultWorkingDirectory)\dotnet
恢复包裹:
$(System.DefaultWorkingDirectory)\dotnet\dotnet.exe restore
......等等
但是有一些限制 - 您仍然没有在构建代理计算机上安装.Net Core 1.1,因此某些功能可能无法正常工作。至少dotnet test
将失败,因为它需要适当的.Net Core运行时。也许还有其他一些功能。
答案 2 :(得分:2)
延伸到@Nikolay Balakin的答案,使用*.csproj
的.NET核心项目尚不支持。
您可以通过自己在托管构建环境中安装最新的.NET内核来解决此问题。
这样可以投放dotnet restore
,dotnet build
,dotnet publish
和dotnet test
。
使用Inline powershell extension运行脚本。您可以链接到脚本,也可以将文本粘贴到内联中。我正在运行一个签入项目的脚本。
似乎每个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)