【问题标题】:NuGet Not Adding Include DirectoriesNuGet 不添加包含目录
【发布时间】:2015-08-10 08:25:10
【问题描述】:

我正在使用 VS Professional 2013 开发一个应用程序,该应用程序使用一个名为 SFML 的 NuGet 包。我现在正在试用 VS 2015 的 Express 版本,我想通过构建这个应用程序来测试它。该应用程序的源代码在 GitHub 上,我可以将存储库克隆到一个新的本地目录并在 VS 2015 中打开它就可以了。当我构建时,NuGet 包被恢复,“包”文件夹被添加到本地解决方案文件夹中。但是,C++代码本身构建失败,抛出编译器错误:

错误(活动)无法打开源文件“SFML\System\NonCopyable.hpp”

在一行写着

#include <SFML\System\NonCopyable.hpp>

这个错误在 VS 2013 中从未发生过,我认为这是因为 NuGet 将适当的路径添加到项目的附加包含目录中。现在没有发生这种情况是因为 NuGet 问题或 VS 2015 问题,还是仅仅因为我遗漏了一些东西?有什么方法可以使用我当前的 2015 Express 版本解决此问题?

提前致谢!

【问题讨论】:

    标签: c++ visual-studio-2013 visual-studio-2015 nuget-package-restore


    【解决方案1】:

    我有同样的问题。在我的示例中,我注意到我的 NugGet 包在名称中具有 v120 Microsoft.AspNet.SignalR.Client.Cpp.v120.WinDesktop 我收到错误找不到包含文件

    要解决这个问题:

    1. 在解决方案资源管理器中右键单击您的项目,然后选择属性
    2. 在配置属性中 - 一般将 平台工具集 更改为与 NuGet 包匹配的版本 - 在本例中为 Visual Studio 2013 (v120)

    更多关于改变平台工具集的细节在这里:https://msdn.microsoft.com/en-AU/library/ff770576.aspx

    现在项目编译正确。

    【讨论】:

    • 感谢您的回复!我不确定我是否遵循您的解决方案。什么是“Microsoft.AspNet.SignalR.Client.Cpp.v120.WinDesktop”?那是一个文件,一个设置吗?此外,我在解决方案配置属性中的任何地方都找不到“平台工具集”。我看到一个“平台”列,但它唯一允许的值是 Win32 和 x64,与 Visual Studio 2013 (v120) 无关。此外,我注意到我的解决方案项目中的 Header Files 和 Source Files 过滤器都是空的,即使 .vcxproj 文件显示了正确的 ItemGroup 元素。知道那是什么吗?再次感谢。
    • 它在项目属性中,而不是解决方案属性中。
    • 在我的例子中,Microsoft.AspNet.SignalR.Client.Cpp.v120.WinDesktop 是 Nuget 包的名称,它为我提供了解决方案的线索。对于您的解决方案,这可能会有所不同;如果其他人对同一个 NuGet 包有问题,我只是在此处输入名称。
    • 您遇到问题的文件是 NuGet Boost 包的一部分,如果您右键单击项目,管理 NuGet 包,请确保安装了 boost。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多