Azure devops 如何将类库项目中的文件和测试程序集包含到已发布的构件中

Azure devops 如何将类库项目中的文件和测试程序集包含到已发布的构件中,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,azure-pipelines-tasks,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,Azure Pipelines Tasks,我有一个解决方案,其中包括一个netcore3.1webapi项目和其他几个netframework4.8类库项目 在我的构建管道中,解决方案的构建没有任何问题,我有一个非常简单的构建,但是我需要这个构建的输出,例如测试程序集以及配置文件,以供发布管道使用。原因是我的发布管道与测试计划和测试套件相关联,是按需运行这些测试计划所必需的 在任何情况下,当我从构建管道发布工件时,都不包括任何测试程序集,只包括来自Web应用程序的文件,这些文件我不需要用于测试目的。我在几个不同的地方读到,我可以将其他项

我有一个解决方案,其中包括一个
netcore3.1
webapi项目和其他几个
netframework4.8
类库项目

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

在任何情况下,当我从构建管道发布工件时,都不包括任何测试程序集,只包括来自Web应用程序的文件,这些文件我不需要用于测试目的。我在几个不同的地方读到,我可以将其他项目添加为依赖项,但这对我来说似乎并不正确,因为这些依赖项是真正需要的。是否有其他方法让生成管道发布这些其他程序集和文件

[更新]解决方案1: 我在别处看到的一个解决方案是使用
复制文件
任务将程序集复制到
${Build.ArtifactStagingDirectory}
,然后发布工件,但要么它不起作用,要么我做了一些不正确的事情。以下是我对这两项任务的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


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

----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.artifactstagindirectory)
,然后随工件一起发布


我尝试了复制和发布任务,但它要么不起作用,要么我怀疑我做得不对。我用我的任务定义更新了我的问题。目前,我试图复制所有文件,以避免在regex上乱动。我确实看到文件被复制到
到${Build.ArtifactStagingDirectory}\…
但是当我发布工件时,它们没有被包括在内。另外,我注意到,或者看起来,您在发布管道中有构建过程,这有什么原因吗?还是仅仅是一个例子?我认为正确的方法是有一个构建管道,使工件可用于发布管道。您可以在复制文件任务中使用“${Build.ArtifactStagingDirectory}”。它应该是$(Build.ArtifactStagingDirectory)。请使用
()
而不是
{}
。然后再检查一遍