C#音乐播放器项目中找不到System.Media程序集的问题求助
解决System.Media找不到及MP3播放问题
嘿,我来帮你搞定这个问题!首先得给你划两个关键点:一是System.Media的引用问题,二是你用SoundPlayer播MP3本身就行不通——它只支持WAV格式哦!
为什么找不到System.Media?
这大概率和你用的.NET框架版本有关:
- 如果你是传统.NET Framework的控制台项目:
System.Media是框架自带的程序集,但需要手动添加引用 - 如果你是**.NET Core/.NET 5+**的项目:这个程序集默认不在项目模板里,官方已经把音频相关功能拆分到不同NuGet包或替代API中了
分场景解决办法
场景1:基于.NET Framework开发
- 右键你的控制台项目 → 选择「添加」→「引用」
- 在弹出的「引用管理器」窗口里,切换到「程序集」→「框架」标签
- 在列表里找到System.Media,勾选它之后点击「确定」
- 注意:这时候代码能编译了,但
SoundPlayer还是播不了MP3,得把音频转成WAV格式才行
场景2:基于.NET Core/.NET 5+开发(当前主流选择)
如果你只需要播放WAV文件
可以安装System.Windows.Extensions NuGet包:
- 右键项目→选择「管理NuGet包」
- 搜索
System.Windows.Extensions并完成安装 - 之后就能正常引用
System.Media.SoundPlayer了
如果你要播放MP3(重点!)
SoundPlayer不支持MP3格式,推荐用NAudio这个成熟的第三方音频库,步骤如下:
- 打开NuGet包管理器,搜索
NAudio并安装 - 替换你的代码为以下示例:
using System; using NAudio.Wave; namespace ConsoleMusic { class Program { static void Main(string[] args) { string mp3Path = AppDomain.CurrentDomain.BaseDirectory + "\\Cream Crossroads.mp3"; using (var audioFile = new AudioFileReader(mp3Path)) using (var outputDevice = new WaveOutEvent()) { outputDevice.Init(audioFile); outputDevice.Play(); Console.WriteLine("正在播放...按任意键停止"); Console.ReadKey(); outputDevice.Stop(); } } } }
你的原代码问题说明
using System; using System.Media; //报错,提示添加引用/程序集 namespace ConsoleMusic { class Program { static void Main(string[] args) { SoundPlayer player = new SoundPlayer(); player.SoundLocation = AppDomain.CurrentDomain.BaseDirectory + "\\Cream Crossroads.mp3"; player.Play(); Console.Read(); } } }
这段代码除了System.Media的引用问题,核心bug是SoundPlayer不支持MP3格式——就算解决了引用问题,运行后也听不到声音哦!
内容的提问来源于stack exchange,提问作者Gil Platt
相关产品推荐
相关产品推荐

