使用Visual Studio构建工具构建和运行单元测试

时间:2020-10-13 07:26:41

标签: c++ visual-studio continuous-integration nuget

我正在使用Google Test适配器将单元测试添加到现有的C ++ Visual Studio项目中。

在使用Visual Studio 2019的计算机上,它们都运行良好,但是当我尝试在构建服务器上运行它们时,出现以下错误

错误:该项目引用了此计算机上缺少的NuGet软件包。使用NuGet软件包还原下载它们。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=322105。丢失的文件是.. \ packages \ Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.3 \ build \ native \ Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets

但是,我们没有使用NuGet进行软件包管理。我尝试安装它,但抱怨缺少文件夹。这不是一个.NET项目,所以我认为这是一个红鲱鱼。

我可以使用Visual Studio安装程序在计算机上安装Google Test适配器,但它不会显示在构建服务器上的VS Build Tools中。

运行msbuild -t:restore并没有帮助,它只会报告“无所事事”。

我不明白为什么VS Build Tools无法使用Google Test适配器,因为它似乎是构建单元测试所必需的。有谁知道为什么它不起作用?处理此问题的最佳做法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您的c ++项目缺少 googletest nuget软件包的内容。因此,解决方案是还原c ++项目中的整个nuget软件包。

更新1

首先,采用一个全新的备份项目,并将其还原到问题开始的时候。

此外msbuild -t:restore命令适用于带有PackageReference nuget management format的项目。

由于,您的c ++项目使用了packages.config nuget management format,因此msbuild -t:restore无法正常工作。 See this official document相反,您应该使用nuget restore命令。

此命令适用于您当前的项目,运行此命令将还原nuget程序包,那么您将永远不会遇到问题。

在使用它之前,您应该下载nuget.exe CLI并将其路径配置到系统环境变量 PATH 中,以便 CMD 可以调用{ {1}}。

有关配置nuget的步骤,您可以参考this link

步骤

1)删除解决方案文件夹下的nuget.exe文件夹

enter image description here

2)然后,打开构建工具,运行:

packages

然后,您可以使用命令构建项目。我希望错误会消失。