You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NuGet无法识别C++包中的.hpp文件,如何正确配置?

问题原因及解决方法

核心问题分析

你遇到的头文件找不到问题,主要由两个错误导致:

  1. MSBuild语法错误:你把<PropertyGroup>嵌套在了<ItemGroup>内部,这不符合MSBuild的语法规范,Visual Studio无法正确解析该配置。
  2. 路径计算错误:你的targets文件放在build/native/目录下,$(MSBuildThisFileDirectory)指向的是该目录的路径,而include目录和build是同级的,直接写$(MSBuildThisFileDirectory)/include会指向不存在的build/native/include路径。

正确配置步骤

1. 修正MyPackage.targets文件内容

将原文件的嵌套结构修正,同时调整路径到正确的include目录位置:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- 直接在Project节点下定义PropertyGroup,不要嵌套在ItemGroup里 -->
  <PropertyGroup>
    <!-- 用Windows反斜杠分隔路径,通过..\..\回到包根目录下的include -->
    <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\..\include;$(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  </PropertyGroup>
</Project>

2. 确保targets文件的放置位置正确

将修正后的MyPackage.targets文件放在NuGet包的build/native/目录下,最终包的结构应该是:

MyPackage.1.0.0.nupkg
├─ include/
│  └─ my_include.hpp
├─ build/
│  └─ native/
│     ├─ MyPackage.targets
│     ├─ x64/
│     │  └─ (你的x64平台DLL/lib文件)
│     └─ x86/
│        └─ (你的x86平台DLL/lib文件)

3. 重新打包并安装

  • 用NuGet包资源管理器重新生成nupkg包
  • 执行命令更新本地源的包:
    nuget add MyPackage.1.0.0.nupkg -source D:\Nuget -Force
    
  • 在Visual Studio项目中卸载原包,重新安装最新版本

验证配置是否生效

安装完成后,右键VS项目 → 属性 → 配置属性 → C/C++ → 常规,查看附加包含目录,如果能看到NuGet包的include目录路径,说明配置生效,此时#include "my_include.hpp"就能正常找到文件了。

内容的提问来源于stack exchange,提问作者Turgut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:26:13