使用Azure DevOps piplines部署命令行.net core 2.2应用程序

时间:2019-01-31 16:09:57

标签: .net-core azure-devops .net-core-2.2

我有一个编写为C#的命令行客户端,目标是.net core 2.2(不是 asp.net内核,只是一个命令行应用程序)。

我正在尝试使用Azure DevOps管道将该应用程序分发到一组服务器。

不幸的是,我无法通过Visual Studio构建操作来创建完整的程序包。

要使用本地编译的包进行部署,我创建了一个运行良好的发布“文件夹”配置文件。我希望能够告诉该操作执行相同的操作并将结果复制到Artifact Staging目录,但是很遗憾,它似乎不起作用。

我正在使用以下MSBuild参数:

/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:PublishProfile="FolderProfile"

个人资料的定义如下:

<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PublishProtocol>FileSystem</PublishProtocol>
    <Configuration>Release</Configuration>
    <Platform>Any CPU</Platform>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <PublishDir>..\ClientPublish\</PublishDir>
    <SelfContained>false</SelfContained>
    <_IsPortable>true</_IsPortable>
  </PropertyGroup>
</Project>

根据我在编译日志中看到的内容,“ DeployOnBuild”参数将被忽略,并且永远不会部署该应用程序。

我在做什么错了?

修改

这是我最近一次使用部署配置文件的尝试的屏幕截图: enter image description here

复制文件: enter image description here 和工件发布: enter image description here

或者,在禁用文件复制任务后,我尝试这样操作:

enter image description here

1 个答案:

答案 0 :(得分:1)

经过很多次往返后,这才是正确的管道:

enter image description here

首先执行SDK Installer任务(类似于.NET Framework的Nuget Installer)

.dotnet还原(类似于.net Framework的Nuget还原)

构建解决方案

然后添加.dotnet发布以创建工件(此步骤需要在构建之后添加)

发布工件以删除工件以供发布管道使用。

在这种情况下,不需要MSBuild参数。内置管道将自行完成所有操作。