单元测试项目引用功能项目时,Azure功能构建管道失败

时间:2020-10-14 10:41:17

标签: azure-devops continuous-integration azure-functions

我正在使用Visual Studio 2019社区版,并且具有多层解决方案。下面是该截图。

请注意,这是一个复制生产解决方案的示例项目,因此,此处的命名可能并不是很重要。

enter image description here

项目规范 :(全部netcoreapp3.1

  1. Sample.AzureFunction.Api-目标框架:netcoreapp3.1和Azure Function版本:3.0.7
  2. {应用程序,模型,ClassLibrary1和ClassLibrary2}-目标框架:netcoreapp3.1都是“ .netcore类库”项目。
  3. ApiTests-目标框架:netcoreapp3.1

问题

当从ApiTest项目到Sample.AzureFunction.Api的引用时,Azure生成管道失败。如果我删除项目引用,则该生成将继续为绿色。这是build步骤在管道中运行时生成错误的屏幕截图。

基本上,所有错误都在抱怨找不到某些dll。例如,CSC : error CS0006: Metadata file 'D:\a\1\s\publish_output\Application.dll' could not be found [D:\a\1\s\Sample.AzureFunction.Api\Tests\ApiTests\ApiTests.csproj]

enter image description here

一些注意事项:

  1. Azure DevOps自动添加build中的.net core步骤。
  2. 我没有专用的Agent,创建新配置项时默认使用Azure Pipelines
  3. 代理规范为windows-2019

我使用经典视图创建管道(没有YAML),但是我可以通过单击生成的步骤并复制YAML,从生成的步骤中获取以下YAML:

enter image description here

我已经花了一天的时间来解决这个问题,现在我的想法已经用完了。任何想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果删除--output自变量,则构建将成功。

在编译测试项目之前,您的文件夹publish_output似乎已清除。因此,它在那里找不到这些dll。

此外,您不需要将所有dll作为工件发布。请使用publish命令为将要部署的代码创建工件:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishBuildArtifacts@1
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
    artifactName: 'myWebsiteName'

运行原始管道后,我列出了publish_output文件夹,您可以在其中找到以下文件:

Application.deps.json
ClassLibrary1.deps.json
Function1
Sample.AzureFunction.Api.deps.json
bin
host.json