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

如何使用MSBuild为C++/CLI项目创建NuGet包

C++/CLI .vcxproj项目基于MSBuild打包NuGet包操作步骤

1. 导入打包所需目标

首先给你的C++/CLI项目通过NuGet包管理器安装NuGet.Build.Tasks.Pack包,安装后会自动向.vcxproj文件导入打包所需的MSBuild目标,无需手动修改配置引入。

2. 配置包元数据

打开.vcxproj项目文件,在全局PropertyGroup节点中添加NuGet包相关属性,无需额外编写.nuspec文件:

<PropertyGroup Label="NuGet配置">
  <!-- 包唯一标识 -->
  <PackageId>自定义包ID</PackageId>
  <!-- 包版本号 -->
  <PackageVersion>1.0.0</PackageVersion>
  <!-- 包作者 -->
  <Authors>作者名称</Authors>
  <!-- 包功能描述 -->
  <Description>包的功能说明</Description>
  <!-- 目标框架,根据你项目的实际配置修改,比如net48、net6.0-windows等 -->
  <TargetFramework>net472</TargetFramework>
  <!-- 注册自定义输出文件处理逻辑 -->
  <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);GetCppCliPackOutputs</TargetsForTfmSpecificBuildOutput>
  <!-- 按需补充其他属性,如<PackageLicenseExpression>MIT</PackageLicenseExpression>等 -->
</PropertyGroup>

3. 配置待打包的输出文件

C++/CLI项目的默认输出不会被打包任务自动识别,需要添加自定义Target节点指定需要打进包的文件:

<Target Name="GetCppCliPackOutputs">
  <ItemGroup>
    <!-- 主程序集dll -->
    <TfmSpecificBuildOutput Include="$(TargetPath)" />
    <!-- 调试符号pdb,不需要可删除 -->
    <TfmSpecificBuildOutput Include="$(TargetDir)$(TargetName).pdb" />
    <!-- XML文档注释,没有可删除 -->
    <TfmSpecificBuildOutput Include="$(TargetDir)$(TargetName).xml" Condition="Exists('$(TargetDir)$(TargetName).xml')" />
    <!-- 若有其他需要打包的依赖文件,可按上述格式添加 -->
  </ItemGroup>
</Target>

4. 执行打包命令

打开Visual Studio开发者命令行,切换到项目根目录,执行以下命令即可完成打包:
msbuild /t:Pack /p:Configuration=Release /p:Platform=x64
执行完成后,生成的nupkg文件会输出到项目的输出目录下的nupkg文件夹中。

注意事项
  • C++/CLI项目不支持AnyCPU平台,打包时指定的Platform参数必须和项目编译配置一致,可选值为x86、x64、ARM等
  • 如果需要打包多平台版本,可以在包ID中加入平台标识区分,比如MyPackage.x64、MyPackage.x86
  • 如果项目依赖原生C++动态库,只需要将对应的dll文件添加到上述GetCppCliPackOutputs的ItemGroup中即可随包发布

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:01