azure-devops - 如何将类库项目中的文件和测试程序集包含到已发布的工件中
问题描述
我有一个解决方案,其中包括一个NET Core 3.1
Web 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
解决方案
当您仅构建您的类库项目并直接在构建管道中发布您的工件时,这些测试程序集不会自动包含。
----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)
首先通过复制文件任务将生成的测试程序集复制到,然后与工件一起发布。
推荐阅读
- c++ - 链表没有打印出正确的数据
- python - 如何从python字典中提取列表(作为dict值)并将其附加到具有字典列表的列表中?
- angular - 从 API 中检索组件数据源的数据
- python - 我以元组形式获取 SELECT mysql 值。如何以字符串形式获取它?
- flutter - 如何使用媒体查询来解决以下问题
- r - 编织 R-Markdown 文档会导致“!未定义的控制序列”。错误
- javascript - 创建响应式导航栏时出现意外结果
- node.js - NodeJS:从数组缓冲区查看和下载 PDF
- apache-spark - pyspark - 结构化流到弹性搜索
- python-3.x - 尝试使用 python 复制文件时出现此 errno 2