首页 > 解决方案 > 如何将类库项目中的文件和测试程序集包含到已发布的工件中

问题描述

我有一个解决方案,其中包括一个NET Core 3.1Web API 项目和其他几个作为NET Framework 4.8类库项目的项目。

在我的构建管道中,解决方案构建没有任何问题,我有一个非常简单的构建,但是我需要此构建的输出,例如测试程序集以及配置文件,以便可用于我的发布管道。原因是我的发布管道与测试计划和测试套件相关联,并且是按需运行这些测试计划所必需的。

在我从构建管道发布工件时,不包含任何测试程序集,唯一包含的内容是来自 Web 应用程序的那些我不需要用于测试目的的文件。我在几个不同的地方读过,我可以将其他项目添加为依赖项,但这对我来说似乎不正确,因为确实需要这些依赖项。还有其他方法可以让构建管道发布那些其他程序集和文件吗?

[更新] 解决方案 1: 我在其他地方看到的一种解决方案是使用Copy files任务将程序集复制到${Build.ArtifactStagingDirectory}然后发布工件,但要么它不工作,要么我做错了什么。这是我对 2 个任务的 YAML 定义:

task: CopyFiles@2
inputs:
Contents: '**'
TargetFolder: '${Build.ArtifactStagingDirectory}'

task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'tests'
publishLocation: 'Container'

FWIW 在CopyFiles日志中我确实看到文件正在被复制,例如:

将 d:\a\1\s\test\BaseTest.cs 复制到 ${Build.ArtifactStagingDirectory}\test\BaseTest.cs

标签: azure-devopsazure-pipelinesazure-pipelines-release-pipelineazure-pipelines-tasks

解决方案


当您仅构建您的类库项目并直接在构建管道中发布您的工件时,这些测试程序集不会自动包含。

----Solution 
    ----NET Core 3.1 Web API project
    ----NET Framework 4.8 Class Library project 1
    ----NET Framework 4.8 Class Library project 2
    ...
    ----Test Project (Reference Class Library Project)

如果您构建测试项目,它将自动包含引用的类库项目。当您发布构建工件时,它还将包括生成的测试程序集。

另一种可能性是您没有选择正确的路径来复制 dll,它使用的是类库项目下的路径而不是测试项目。

您需要$(build.artifactstagingdirectory)首先通过复制文件任务将生成的测试程序集复制到,然后与工件一起发布。

在此处输入图像描述


推荐阅读