Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Azure管道发布:具有特定文件夹或项目的任务DotNetCoreCLI_Asp.net Core_Azure Devops_Azure Pipelines_Azure Pipelines Build Task - Fatal编程技术网

Asp.net core Azure管道发布:具有特定文件夹或项目的任务DotNetCoreCLI

Asp.net core Azure管道发布:具有特定文件夹或项目的任务DotNetCoreCLI,asp.net-core,azure-devops,azure-pipelines,azure-pipelines-build-task,Asp.net Core,Azure Devops,Azure Pipelines,Azure Pipelines Build Task,我在运行具有以下项目/文件夹结构的Azure构建管道时遇到问题(不需要的行为) 我的存储库的根文件夹有两个主要文件夹: 前端(ASP.Net Core 2.x和Angular 7项目) 后端(ASP.Net Core 2.x) 我正在尝试构建两个单独的Azure管道,一个用于后端,另一个用于前端,因此我使用projects:参数指定正确的路径 build和test命令运行正常,仅恢复/构建/测试后端文件夹,但publish命令同时针对两个文件夹运行:后端和前端 这是我的yaml文件: #b

我在运行具有以下项目/文件夹结构的Azure构建管道时遇到问题(不需要的行为)

我的存储库的根文件夹有两个主要文件夹:

  • 前端(ASP.Net Core 2.x和Angular 7项目)
  • 后端(ASP.Net Core 2.x)
我正在尝试构建两个单独的Azure管道,一个用于后端,另一个用于前端,因此我使用
projects:
参数指定正确的路径

build
test
命令运行正常,仅恢复/构建/测试
后端
文件夹,但
publish
命令同时针对两个文件夹运行:后端和前端

这是我的yaml文件:

 #build backend project
 task: DotNetCoreCLI@2
   displayName: dotnet build --configuration $(buildConfiguration)
   name: BuildBackendProject
   inputs:
     command: build
     projects: '**/backend/**/*.csproj'
     arguments: '--configuration $(buildConfiguration)'

 ... #run some tests

 #publish backend project
 task: DotNetCoreCLI@2
   displayName: dotnet publish backend --configuration $(buildConfiguration)
   name: PublishBackendProject
   inputs:
     command: publish
     projects: '**/backend/**/*.csproj'
     publishWebProjects: True
     arguments: '--configuration $(BuildConfiguration) --output 
     $(Build.ArtifactStagingDirectory)/backend'
     zipAfterPublish: True
我尝试了不同的文件夹路径,但它总是运行两个发布命令

如果我在CMD
dotnetpublishbackend
(从repo的根文件夹)中本地运行,它可以正常工作,但显然不适用于Azure管道


非常感谢任何想法或修复。

诀窍在于使用publishWebProjects/projects属性。这些事实上是相互排斥的。如果使用了
publishWebProjects
,则跳过
projects
属性值

从:

发布Web项目*:如果为true,任务将尝试查找Web项目 项目,并对其运行“发布”命令。网状物 项目通过存在web.config文件或 目录中的wwwroot文件夹

因此,您可以尝试以下代码进行发布:

task: DotNetCoreCLI@2
  displayName: dotnet publish backend --configuration $(buildConfiguration)
  name: PublishBackendProject
  inputs:
    command: publish
    projects: '**/backend/**/*.csproj'
    publishWebProjects: false
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/backend'
    zipAfterPublish: true

尝试使用'backend/***/.csproj'而不是'*/backend/***/.csproj'@D.J'。我根据你的建议尝试了,甚至使用了一个特定的项目而不是通配符,但它仍然同时运行两个发布命令。[命令]/usr/bin/dotnet publish/home/vsts/work/1/s/frontend/GaiaFront.Web.csproj。如果最后一个命令与build、test和restore命令一样工作,则不应执行它。谢谢,@hermancords!遗漏了那部分文档。它正确地执行了后端文件夹的发布命令。唯一的问题是它为该文件夹中的所有项目(web和类库)构建了ZIP。我可以让发布管道只获取drop文件夹的web项目,但是考虑到我只需要构建web项目,我将
projects:
参数更改为特定路径。谢谢,将publishWebProjects设置为false是解决我的问题的关键。可能只是我,但不清楚从文档中默认为真。我同意,只是花了一个小时试图弄明白为什么一个简单的“dotnet发布”对一个构建不起作用,因为它默认为true,并且只获取解决方案中的一个web csproj。如果它们是互斥的,那么如果我们只得到一个警告,说projects“xyz”将被忽略就好了,因为publishWebProjects已设置为true,而不是这样一个无声的忽略键配置参数。多么误导性的属性名称!!!花了好几个小时才弄明白。