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

如何在C# .NET 8中使用Microsoft.Windows.Management.Deployment?

解决.NET 8中使用Microsoft.Windows.Management.Deployment时的REGDB_E_CLASSNOTREG错误

以下是针对该问题的排查与解决步骤:

  • 确认Windows App SDK版本与项目配置

    1. 确保安装了Windows App SDK 1.5及以上稳定版,该版本完全兼容.NET 8。
    2. 项目目标框架必须指定为Windows专属的.NET 8,在项目文件中设置示例:
      <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
      
      目标Windows SDK版本建议不低于19041(Windows 10 20H1)。
    3. 检查Windows App SDK的NuGet引用是否正确,确保版本匹配:
      <ItemGroup>
        <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240311000" />
      </ItemGroup>
      
  • 验证系统部署组件状态

    1. 确保Windows App Installer已安装并更新至最新版本(可通过Microsoft Store搜索更新),该组件是部署API的核心依赖。
    2. 检查AppX Deployment Service (AppXSvc)服务状态:按下Win+R输入services.msc,找到该服务,确认启动类型为「手动」或「自动」,且服务处于运行状态。
  • 确认应用权限与打包方式

    1. 若为桌面应用,调用部署API时需以管理员身份运行程序,部署操作通常需要系统级权限。
    2. 若为MSIX打包应用,需在Package.appxmanifest中添加packageManagement权限:
      <Capabilities>
        <Capability Name="packageManagement" />
      </Capabilities>
      
      注意:Microsoft.Windows.Management.Deployment API主要针对MSIX打包场景优化,非打包桌面应用可能存在兼容性限制。
  • 代码调用正确性检查
    确保使用的是Windows App SDK提供的PackageManager类,而非旧UWP API的同名类:

    using Microsoft.Windows.Management.Deployment;
    
    // 正确实例化方式
    var packageManager = new PackageManager();
    // 示例:获取当前用户的所有已安装包
    var installedPackages = packageManager.FindPackagesForUser(string.Empty);
    

内容的提问来源于stack exchange,提问作者KG-DROID

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:22:42