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

.NET 5.0 WinForms添加Windows Media Player控件无法启用如何解决

问题根因

你遇到的报错确实由版本兼容性导致:

Windows Media Player是基于COM的ActiveX控件,仅原生支持.NET Framework体系下的WinForms项目。.NET 5属于.NET Core系列,默认关闭了工具箱对COM ActiveX控件的拖放支持,因此会出现「控件已添加但未启用」的提示。

解决方案

方法1:手动生成互操作程序集引入

  • 打开Visual Studio对应的开发者命令提示符,执行ActiveX互操作生成命令,替换为你系统中对应的wmp.dll路径:
    aximp.exe C:\Windows\System32\wmp.dll
    如果你的项目需要兼容32位运行,将路径替换为C:\Windows\SysWOW64\wmp.dll
  • 命令执行完成后会生成两个互操作程序集:AxWMPLib.dll和WMPLib.dll
  • 回到.NET 5 WinForms项目,右键项目→添加→引用,将上述两个dll添加到项目引用中
  • 双击打开项目的.csproj工程文件,在<PropertyGroup>节点中补充以下配置:
<UseWindowsForms>true</UseWindowsForms>
<EnableUnmanagedDebugging>true</EnableUnmanagedDebugging>
<!-- 确保目标平台和你引用的wmp.dll平台一致,可选值x64/x86 -->
<PlatformTarget>x64</PlatformTarget>
  • 之后可以在代码中直接实例化控件使用,示例如下:
// 窗体初始化逻辑中添加
AxWMPLib.AxWindowsMediaPlayer mediaPlayer = new AxWMPLib.AxWindowsMediaPlayer();
mediaPlayer.Dock = DockStyle.Fill;
this.Controls.Add(mediaPlayer);

// 播放测试
mediaPlayer.URL = "本地多媒体文件路径";
mediaPlayer.Ctlcontrols.play();

方法2:安装兼容包降低适配成本

如果方法1运行时出现依赖缺失报错,可以通过安装官方兼容包补全COM互操作依赖:

  • 右键项目→管理NuGet包,搜索安装Microsoft.Windows.Compatibility包
  • 再重复方法1的剩余步骤即可正常使用控件
注意事项
  • 不要强行将项目目标框架切换为.NET Framework适配控件,会导致原有.NET 5相关的依赖出现兼容性问题
  • 如果不需要用到Windows Media Player的专属功能,可以优先选择.NET 5+原生支持的多媒体播放控件,避免COM互操作带来的额外性能损耗和适配问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:04