0

我正在编写一个程序,使用 Windows Media Player 组件从与我的应用程序位于同一目录的 Resources 文件夹中播放音频(因此可以将其移动到另一台计算机)。

我当前选择音频剪辑的代码是:

soundPlayer.URL = @"C:\Users\Ryan\Desktop\MyProgram\SFX\nameThatTune.mp3";

哪个工作正常,但是当我将其更改为:

soundPlayer.URL = @"SFX\showIntro.mp3";

它停止工作。我也尝试过以 ~/ 和 ../ 开头的文件路径,但都不起作用。这是 WMP 组件特有的问题还是我错过了更大的问题?

4

1 回答 1

1

相对路径取决于 的值Environment.CurrentDirectory。在 Visual Studio 中运行应用程序时,当前目录指向项目的根文件夹(而不是应用程序的执行路径)。还有一些操作可以改变当前目录(使用打开文件OpenFileDialog)。你不能总是依赖当前目录作为一个特定的地方,所以你应该总是尝试使用绝对路径。

如果该文件位于应用程序文件夹中(靠近 .exe 文件),您可以使用:

soundPlayer.URL = Path.Combine(
    Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
    "showIntro.mp3");

或者如果您使用的是 WinForms:

soundPlayer.URL = Path.Combine(
    Path.GetDirectoryName(Application.ExecutablePath),
    "showIntro.mp3");

将其更改为指向子文件夹也很简单。

请注意,该文件必须位于项目的输出文件夹中(bin\Debug例如)。

于 2013-02-24T09:43:48.767 回答