首页 > 解决方案 > dotnet 构建失败,因为找不到项目

问题描述

我有一个 YAML 文件,其中包含将文件复制和发布到工件并下载工件的任务:

任务 DownloadPipelineArtifact@2 的日志:

Downloading: D:\a\1\s\Service\ProjectName\Repositories.Logging/Repositories.Logging.csproj

然后,我有一个任务要构建。构建在此任务上失败。

任务 DotNetCoreCLI@2 的日志:

Skipping project "D:\a\1\s\Service\ProjectName\Repositories.Logging\Repositories.Logging.csproj" because it was not found.

为什么它说跳过项目,因为即使 DownloadPipelineArtifact@2 的日志显示相同的路径也找不到它?我错过了什么,我该如何解决?

更新:

我知道斜线有区别。但是,我无法控制更新斜杠:

复制、发布、下载的任务:

    - task: CopyFiles@2
      displayName: 'copy service'
      inputs:
        SourceFolder: 'Service\ProjectName'
        contents: '**'
        TargetFolder: '$(build.artifactstagingdirectory)'

    - task: PublishBuildArtifacts@1
      displayName: 'publish artifact'
      inputs:
        PathtoPublish: '$(build.artifactstagingdirectory)'        
        ArtifactName: '$(Build.BuildNumber)'

    - task: DownloadPipelineArtifact@2
      inputs:
        artifactName: '$(Build.BuildNumber)'
        downloadPath: Service\ProjectName

将下载任务更新为:

    - task: DownloadBuildArtifacts@0
      inputs:
        artifactName: '$(Build.BuildNumber)'
        downloadPath: $(System.DefaultWorkingDirectory)\Service\ProjectName

我从 DownloadBuildArtifacts@0 看到以下日志:

Downloaded to D:\a\1\s\Service\ProjectName\20201118.10\Repositories.Logging\Repositories.Logging.csproj

以及来自 DotNetCoreCLI@2 的以下日志:

D:\a\1\s\Service\ProjectName\Repositories.Logging\Repositories.Logging.csproj because it was not found

在这种情况下,我正确地看到了斜线。是否可以删除:

20201118.10

从 downloadPath 使其变为:

D:\a\1\s\Service\ProjectName\Repositories.Logging\Repositories.Logging.csproj

标签: azure-devopsyaml

解决方案


是否可以20201118.10downloadPath.

20201118.10使用任务时,我们无法删除工件名称Download build artifacts

当我们Download build artifacts在经典模式下检查任务时,我们可以知道该选项Artifact name必需的:

在此处输入图像描述

为了解决这个问题,我们可以添加一个复制任务来复制文件到$(System.DefaultWorkingDirectory)\Service\ProjectName文件夹

- task: CopyFiles@2
  displayName: 'Move artifact Name'
  inputs:
    SourceFolder: '$(System.DefaultWorkingDirectory)\Service\ProjectName\$(Build.BuildNumber)'
    TargetFolder: '$(System.DefaultWorkingDirectory)\Service\ProjectName'

20201118.10或者,您可以在构建项目时指定包含工件名称的路径:

- task: DotNetCoreCLI@2
  displayName: 'dotnet build'
  inputs:
    projects: '$(System.DefaultWorkingDirectory)\Service\ProjectName\$(Build.BuildNumber)\Repositories.Logging\Repositories.Logging.csproj'

推荐阅读