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

引入Microsoft.Direct3D.D3D12 NuGet后MakeAppx.exe打包报错0x8007007b求助

解决MakeAppx.exe打包MSIX时因Microsoft.Direct3D.D3D12.1.618.2 NuGet包触发的0x8007007b错误

问题背景

开发DirectX12应用时,引入Microsoft.Direct3D.D3D12.1.618.2 NuGet包后,执行MakeAppx.exe pack命令创建MSIX包会报错0x8007007b,日志提示“文件名、目录名或卷标语法不正确”;移除该包则打包正常,其他NuGet包无此问题。

可行解决方案

  • 排查非法路径/过长路径:该版本包可能在输出目录生成了带特殊字符或超长路径的文件。用dir /s /b <项目输出目录>命令遍历所有文件,找到路径不符合Windows规范的文件(比如路径长度超过260字符、包含非ASCII字符或非法符号),手动调整这些文件的输出路径。
  • 调整项目文件中的包引用配置:在项目的.vcxproj或.csproj文件中,针对该NuGet包的输出文件,手动指定<CopyToOutputDirectory>或<OutputPath>属性,避免生成非法路径。例如,对带有问题的pdb文件,可设置不复制到输出目录:
    <ItemGroup>
      <None Remove="packages\Microsoft.Direct3D.D3D12.1.618.2\lib\native\some-long-path.pdb" />
    </ItemGroup>
    
  • 切换NuGet包版本:1.618.2版本存在打包兼容性问题,尝试升级到相邻稳定版本(如1.621.0)或降级到1.606.4版本,多数情况下可解决路径相关的打包错误。
  • 清理缓存后重新打包:删除项目的bin、obj目录以及NuGet缓存,重新生成项目后再执行MakeAppx.exe pack命令,避免残留的异常文件干扰打包。
  • 检查打包命令参数:确保MakeAppx.exe命令中的源目录和输出包路径没有非法字符,路径需用双引号包裹,例如:
    MakeAppx.exe pack /d "C:\MyDX12App\bin\x64\Release" /p "C:\MyDX12App\MyDX12App.msix"
    

内容的提问来源于stack exchange,提问作者Włodzimierz O. Kubera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:26:07