【问题标题】:How to associate new project and already downloaded NuGet packages?如何关联新项目和已下载的 NuGet 包?
【发布时间】:2018-04-07 05:00:52
【问题描述】:

如何轻松关联新项目和已下载的 NuGet 包?

一个示例场景:

我创建了一个名为 mylib 的 Visual Studio 解决方案和项目。我安装了 Nuget 包,比如 C++ boost 库。我可以立即使用 boost 库,而无需手动设置标头/链接器目录。这很方便。

现在我在同一个解决方案下创建一个新项目(或添加一个现有项目),命名为executable。我也想在这个项目中使用 boost 库。

很遗憾,没有图形或 IDE 界面来链接新项目的依赖项。

上图是安装了NuGet包,但是新添加的项目executable还是没有链接。

要更正此问题,我必须手动修改项目(例如 .vcxproj)XML 文件。我从mylib复制并粘贴到executable

  <ImportGroup Label="ExtensionTargets">
    <Import Project="packages\boost.1.65.1.0\build\native\boost.targets" Condition="Exists('packages\boost.1.65.1.0\build\native\boost.targets')" />
    <Import Project="packages\boost_regex-vc141.1.65.1.0\build\native\boost_regex-vc141.targets" Condition="Exists('packages\boost_regex-vc141.1.65.1.0\build\native\boost_regex-vc141.targets')" />
  </ImportGroup>
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('packages\boost.1.65.1.0\build\native\boost.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\boost.1.65.1.0\build\native\boost.targets'))" />
    <Error Condition="!Exists('packages\boost_regex-vc141.1.65.1.0\build\native\boost_regex-vc141.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\boost_regex-vc141.1.65.1.0\build\native\boost_regex-vc141.targets'))" />
  </Target>

然后就可以了。

或者,卸载已下载的 NuGet 包并重新安装它们也可以。但这显然不是一个好的解决方案。

我想知道是否有一种很好的方法可以重新关联已下载的 NuGet 包和项目之间的依赖关系。我在 Visual Studio 2017 的项目属性页中找不到此类功能。

【问题讨论】:

  • 您是否也将nuget包boost安装到项目executable中?怎么添加的,和添加mylib项目一样吗?要重新关联已下载的 NuGet 包和项目之间的依赖关系,可以在包管理器控制台窗口中使用命令行Update-Package -Id &lt;package_name&gt; –reinstall
  • @Leo-MSFT 感谢您的评论!我可能是错的,但我无法将boost 安装到executable 项目中。如屏幕截图所示,executable 显示为已经有boost。顺便说一句,Update-Package 似乎有效!这就是我想做的。

标签: visual-studio visual-studio-2015 nuget visual-studio-2017


【解决方案1】:

要更正此问题,我必须手动修改项目(例如 .vcxproj)XML 文件。我从 mylib 复制并粘贴到可执行文件中

根据您的描述,boost 包似乎没有正确安装到项目executable 中。所以你可以在包管理器控制台中使用 NuGet 命令行:

Update-Package -reinstall

强制将包重新安装到executable 项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2016-08-20
    • 2019-09-01
    • 2019-11-29
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多