.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
相关产品推荐
相关产品推荐

