【问题标题】:I can't find the System.Media namespace in Visual Studio 2019我在 Visual Studio 2019 中找不到 System.Media 命名空间
【发布时间】:2025-12-05 04:20:16
【问题描述】:

编辑 - 回答:感谢@LexLi 和@Amy,我找到了解决方案;我不小心创建了一个 .NET Core 控制台应用程序而不是 .NET Framework。一旦我将它重新制作为 .NET Framework 应用程序,它就有“System.Media”可用。

我对学习 C# 比较陌生(仅几周),但我正在尝试制作一个控制台应用程序文本游戏,并且我有一个打字机方法用于将消息打印到显示器上。

public static void typewriter(string s)
{
    // This method types strings out slowly.
    for (int i = 0; i < s.Length; i++)
    {
        Console.Write(s[i]);

        Thread.Sleep(50);
    }
}

我想在输入每个字符时添加一个声音(我已经有了打字机声音)。我看到有人推荐位于 System.Media 中的 SoundPlayer 类。它看起来像这样:

SoundPlayer typewriter = new SoundPlayer();
typewriter.SoundLocation = Environment.CurrentDirectory + "/typewriter.wav";

我的问题是,我似乎无法访问 System.Media

如果我键入 using System.(et cetera),Intellisense 不会将媒体显示为可用选项。我正在使用 Visual Studio 2019 并拥有 .Net Framework 4.8 版

如何访问 System.Media?

这是一张包含一些信息的照片,用于显示我的 .Net 框架,并且 Visual Studio 无法识别 SoundPlayer();

【问题讨论】:

  • 查看 MSDN 以获取有关该命名空间的文档。确定它位于哪个程序集。然后添加对该程序集的引用。
  • 提示:查找标题和命名空间下的documentation for the class,它显示“Assemblies: System.dll, System.Windows.Extensions.dll”。右键单击您的项目。选择 Add、Reference... 并找到其中一个程序集。
  • 您可能创建了一个 .NET Core 控制台应用程序,而不是一个 .NET Framework 控制台应用程序(该领域新手的典型错误)。然后你不能使用那个类,除非你添加一个 NuGet 包引用到System.Windows.Extensions。如果您手头的所有学习材料仍然基于 .NET Framework,我建议您创建一个 .NET Framework 控制台应用程序。

标签: c# media soundplayer


【解决方案1】:

查看 MSDN 以获取有关该命名空间的文档。确定它位于哪个程序集。然后添加对该程序集的引用。

Google "MSDN system.media".。从该命名空间中选择一个类。我将使用SoundPlayer

文档说该类位于Assemblies: System.dll, System.Windows.Extensions.dll

所以add a reference 到这些程序集之一。

【讨论】:

  • “添加对每个程序集的引用”?根据该项目的目标平台(.NET Framework 或 .NET Core),只需要其中一个。
  • @LexLi 感谢您对 .NET Framework 与 .NET Core 的推荐。我会调查一下,看看它是否有帮助。我还上传了一个屏幕截图来显示我的 .NET 框架版本。
  • @RobbyHeckman 相关的框架版本在你的项目属性中,而不是在VS的关于窗口中。
  • @RobbyHeckman 屏幕截图中输出面板中的“CoreCLR”文本表明使用了 .NET Core。所以我的假设得到了支持。