无法找到 testhost.dll。请发布您的测试项目并重试。 (.Net 核心 2.1)

Unable to find testhost.dll. Please publish your test project and retry. (.Net Core 2.1)

我有一个 C#(selenium + NUnit + Specflow).Net Core 2.1 项目(对比 2017)。

我的项目引用了包含 testhost.dll 的 Microsoft.TestPlatform.TestHost nuget。我的计算机上的测试 运行 但是当我尝试在 Azure DevOps 中对它们进行 运行 时,它们失败并显示错误 "Unable to find testhost.dll"。

这是有道理的,因为当我在我的计算机上构建项目时,testhost.dll 没有添加到 bin 目录,尽管该项目引用了包含 testhost.dll 的 Microsoft.TestPlatform.TestHost nuget。

问题:为什么 testhost.dll 在构建时没有添加到 bin 目录中?

注意:我查看了有关此错误消息的其他帖子,大多数时候他们的问题是他们没有引用程序集。但是,我引用的是 nuget。

  1. 项目确实引用了 testhost.dll

  1. Microsoft.TestPlatform.TestHost 在 *.csproj 文件中

  1. 当在我的计算机上的命令行上 运行 时它 运行 没问题(当我的机器上 运行 时不需要 testhost.dll 因为安装了 VS)

  1. 当在 Azure Pipeline 中 运行 时,它会失败并指出找不到 testhost.dll(这是有道理的,因为它永远不会被复制到 bin 目录中。不知道为什么它没有被添加虽然到垃圾箱)

这很可能是问题所在。我将文件复制到工件而不是发布。我会测试看看这是否有效。在我尝试这个之后会更新这个 post。 [更新:是的,问题是我需要发布才能将所需的 *.dll 放入 bin 目录]

图中的答案来自以下github page.


这些是我遵循的说明。他们真的很好。在将它集成到软件管道之前,我用它来适应 运行 天蓝色的测试项目。您会看到分钟 11:33 显示测试需要在作业中有一个 'Publish' 步骤。 How to Run .NET Core Selenium Tests in Azure DevOps

在测试执行之前 运行 Publish 任务(dotnetmsbuild),并使用发布位置的测试库。