gpt4 book ai didi

c++ - 如何为 Visual Studio C++ 项目重新生成包目录?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:05:22 26 4
gpt4 key购买 nike

我最近创建了一个基于 Google Test 的 C++ Visual Studio 2017 单元测试项目 (vcxproj)。我使用了 File/New/Project/Installed/Visual C++/Test/Google Test

这创建了一个 package.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn" version="1.8.0" targetFramework="native" />
</packages>

它还在我的解决方案中创建了一个 packages 目录,并将 googletest 包放入其中。该目录包含二进制库(无源代码),因此我没有将 packages 目录添加到版本控制中。我的假设是,如果包丢失(使用 nuget 或其他东西),Visual Studio 会重新下载包。

但是,当我克隆存储库并重新开始时,单元测试项目拒绝打开(“加载失败”),因为其中一个导入语句中提到的包目录不存在:

<Import Project="..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets" />

我看了这篇文章,里面好像有一些提示: https://learn.microsoft.com/en-gb/nuget/consume-packages/package-restore

他们建议启用“在构建过程中自动检查丢失的包”。我的复选框已经被选中,所以我猜它在加载项目之前无法构建。

在这里进行的正确方法是什么?我应该 checkin packages 还是有其他方法可以自动获取包(就像 VS 在创建我的项目时所做的那样)?

更新:我能够在命令行上使用 nuget restore -SolutionDir xyz 手动恢复包目录,但是有没有办法在项目打开之前自动触发它?

最佳答案

What is the right way to proceed here?

您应该向 Import target 添加条件:

  <ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\xxx\xx.targets" Condition="Exists('..\packages\xxx\xx.targets')" />
</ImportGroup>

当我们创建 Google Test 项目时,它默认将 .targets 文件导入到项目文件 .vcxproj 中。您可以卸载您的项目并对其进行编辑,您将遵循导入语句:

  <ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets" Condition="Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" />
</ImportGroup>

不确定为什么 Condition="Exists('..\packages\xx.targets')" 在您的导入语句中丢失,要解决此问题,请将条件添加到导入目标。

希望这对您有所帮助。

关于c++ - 如何为 Visual Studio C++ 项目重新生成包目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com