C# 控制台:能否在与项目相同的文件夹中找到 .wav 文件

C# console: Can you locate a .wav file in the same folder as the project

你能在控制台项目的'Debug'文件夹中找到.wav文件吗?

- 我需要发生什么 -

我想在我的游戏中播放一个循环的 .wav 文件(这是一个控制台项目,而不是 Forms),我需要找到这个 .wav 文件,即使代码 运行s 在任何电脑。例如,如果我将我的游戏放在 USB 上,运行 将它放在另一台计算机上,则代码需要在项目文件夹中找到 .wav 文件。

-问题-

目前我的代码如下所示:

static void Main(string[] args)
    {
        var soundPlayer = new System.Media.SoundPlayer();
        soundPlayer.SoundLocation = @"C:\ProjectFolder\song.wav";
        soundPlayer.PlayLooping();
    }

这会播放我的 .wav 文件,但如果我将它带到另一台计算机,它会尝试在我的 HDD 上找到 .wav 文件,而不是在新计算机的 HDD/SSD 上。

-我试过的-

我已经看过,但我找到的每一个答案都不起作用。这是一个应该有效但无效的答案:

static void Main(string[] args)
    {
        var soundPlayer = new System.Windows.Media.MediaPlayer();
        soundPlayer.Open(new Uri(Application.StartupPath + @"\ProjectFolder\song.wav"));
        soundPlayer.PlayLooping();
    }

在 Visual Studio 编辑器中,第 1 行的 'Media' 带有红色下划线,第 2 行的 'Application' 也是如此。

- 求助! -

我希望这是一个常见问题,希望所有比我优秀的程序员都能找到答案。 如果你能在下面发表评论,那将非常有帮助,即使你知道与此相关的任何事情,或者可以指点我知道的人。感谢阅读。

您通常:

  1. 进入 MSVS 解决方案资源管理器

  2. 将文件添加到您的项目根目录(或类似“wav”的子目录)。

  3. 右键单击 .wav 文件>Select“属性”>Select“复制到输出目录”=>如果较新则复制

    所以每次构建项目时,文件都会自动复制到构建目录中。

  4. 在您的代码中,您可以使用相对路径打开。

    示例:soundPlayer.Open(new Uri("song.wav"));

注意

你还说'Media' on line 1 is underlined red...

这意味着您需要添加对“System.Media”的引用:

看看Can't find System.Windows.Media namespace?

我不确定您使用的是什么平台,但也请看这里:Using the Windows Media Player Control in a .NET Framework Solution