Visual Studio 无法识别已安装 NuGet 包的头文件

Header file for installed NuGet package not recognized in Visual Studio

我正在尝试通过浏览教程来学习 Halide。我在 VS 15 中工作,并为 Halide 添加了 NuGet 包并将其添加为对我的项目的引用(如图所示)。我看过的 NuGet 教程似乎表明,一旦我添加了引用,VS 应该会自动识别项目的头文件,但这并没有发生。我已经阅读了所有与此相关的 Whosebug 问题,并尝试卸载并重新安装包,重新启动 VS,并确保包位于正确的项目目录中。我被卡住了——如何在 Visual Studio 中引用 Halide?

screenshot of VS15

我是 Whosebug、Halide 和 Visual Studio 的新手,非常感谢您的帮助。

Header file for installed NuGet package not recognized in Visual Studio

此问题与 nuget 包本身有关。那是因为这个包缺少一个 .targets 文件来将头文件文件夹添加到 AdditionalIncludeDirectories

当你打开解决方案文件夹中的\packages文件夹,再打开文件夹Halide.1.0.0,你会发现build文件夹中没有Halide.targets这个文件。如果您安装另一个 nuget 包 glew,您将在文件夹 ..\build\native 中找到 glew.targets,代码如下:

  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>HAS_GLEW;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)../..//build/native/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <ResourceCompile>
      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)../..//build/native/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
  </ItemDefinitionGroup>

这就是头文件无法被Visual Studio识别的原因。

这个问题的解决方法,可以手动添加路径到AdditionalIncludeDirectories:

Properties->C/C++->General->Additional Include Directories,添加C:\Users\<UserName>\source\repos\ConsoleApplication1\packages\Halide.1.0.0\include;%(AdditionalIncludeDirectories)

希望对您有所帮助。