Azure devops 如何在Azure Devops中的一个sln文件中使用一个.NET桌面应用程序和一个Web应用程序构建管道

Azure devops 如何在Azure Devops中的一个sln文件中使用一个.NET桌面应用程序和一个Web应用程序构建管道,azure-devops,Azure Devops,我是Azure Devops的新手,我现有的应用程序由.NET中的门户服务(web应用程序)和桌面应用程序组成,这是visual studio中的一个解决方案。构建/发布此类结构化解决方案的最佳方式是什么 当我选择asp.net作为步骤时,它成功构建并形成zip。但我认为没有添加.NET serilog应用程序 当我选择.NET Desktop时,我会在末尾收到一条消息: ##[警告]目录“D:\a\1\a”为空。不会向构建工件“drop”添加任何内容 我想在prem IIS服务器上发布到。下面

我是Azure Devops的新手,我现有的应用程序由.NET中的门户服务(web应用程序)和桌面应用程序组成,这是visual studio中的一个解决方案。构建/发布此类结构化解决方案的最佳方式是什么

当我选择asp.net作为步骤时,它成功构建并形成zip。但我认为没有添加.NET serilog应用程序

当我选择.NET Desktop时,我会在末尾收到一条消息:

##[警告]目录“D:\a\1\a”为空。不会向构建工件“drop”添加任何内容

我想在prem IIS服务器上发布到。下面是

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

配置管道时,可以选择预定义模板。对于.NET桌面应用程序,您应该选择以下选项:

更多关于这方面的细节,你会发现

它将为您创建这样的YAML


触发:
-主要
游泳池:
vmImage:“windows最新版本”
变量:
解决方案:'***.sln'
构建平台:“任何CPU”
buildConfiguration:“发布”
步骤:
-任务:NuGetToolInstaller@1
-任务:NuGetCommand@2
投入:
恢复解决方案:“$(解决方案)”
-任务:VSBuild@1
投入:
解决方案:“$(解决方案)”
平台:“$(构建平台)”
配置:“$(构建配置)”
-任务:VSTest@2
投入:
平台:“$(构建平台)”
配置:“$(构建配置)”
现在,要使桌面应用程序易于部署,您需要

要构建ASP.NET应用程序(我假设这是您的情况),您需要使用ASP/NET模板,但实际上您可以在这两种情况下都使用此模板

触发器:
-主要
游泳池:
vmImage:“windows最新版本”
变量:
解决方案:'***.sln'
构建平台:“任何CPU”
buildConfiguration:“发布”
步骤:
-任务:NuGetToolInstaller@1
-任务:NuGetCommand@2
投入:
恢复解决方案:“$(解决方案)”
-任务:VSBuild@1
投入:
解决方案:“$(解决方案)”
msbuildArgs:“/p:DeployOnBuild=true/p:WebPublishMethod=Package/p:PackageAsSingleFile=true/p:SkipInValidConfiguration=true/p:PackageLocation=“$(build.artifactStagingDirectory)””
平台:“$(构建平台)”
配置:“$(构建配置)”
-任务:VSTest@2
投入:
平台:“$(构建平台)”
配置:“$(构建配置)”
就部署而言,这完全取决于您希望将应用部署到何处。但如果您部署到Azure应用程序服务,请检查此项

你的问题缺乏细节,所以很难给你最合适的答案。但我希望这对你有帮助

如何在一个.NET桌面应用程序和一个Web应用程序中构建管道 Azure Devops中的sln文件

可以使用asp.net模板创建生成管道。由于默认情况下指定了
解决方案:'***.sln'
,因此生成任务将生成这两个项目

1.要在IIS服务器中部署Asp.net核心项目,可以在生成管道中发布Web项目的生成工件。然后使用IIS Web App管理任务、IIS Web App部署任务对其进行部署

2.至于控制台项目,据我所知,我们没有正式推荐的任务来部署桌面应用程序。相反,您可以使用将xx.exe复制到所需的位置


(此任务要求您在构建工件中包含xx.exe,这样您就可以在同一个构建工件中保留两个项目的输出,或者在构建管道中为您的两个项目发布两个构建工件。)

您好,谢谢。我补充了一些细节。这正是我尝试的,包括.NET应用程序和web应用程序任务,它可以很好地构建web应用程序,但没有为桌面应用程序创建工件。我想在prem上使用IIS服务器,您是否能够选择要以与Azure应用程序服务相同的方式部署哪个zip?您可以共享您的管道吗?在不知道自己实际做了什么的情况下回复邮件是非常困难的。当然,您也可以选择要部署的zip,以便在prem上将其部署到IIS。我添加了管道。我还尝试基于这个线程包含任务副本文件:C#app是一个带有serilog的报告发送服务,我猜它应该与通过msdeploy.exe完成的web app一起部署。为什么还必须将控制台应用程序部署到目标服务器?您的web应用在某些方面是否依赖于console项目?如果没有,就没有必要在同一工件中部署这两个项目?你能分享一些关于你现在在哪一点被阻止的细节吗?谢谢兰斯。解决方案是创建两个工件。我听说.NETCore在解决方案中支持基于csproj的构建,而旧的ASP.NET应用程序则不支持