播放在项目中有相对路径的wav文件

时间:2013-04-17 16:58:21

标签: c# visual-studio-2012 wav relative-path soundplayer

我在相对路径和wav文件的复制方面遇到了一些问题。我有这个简单的代码,完美地运作:

SoundPlayer player = new SoundPlayer();
player.SoundLocation = @"C:\Users\Admin\Documents\Visual Studio 2012\Projects\TestProject\TestProject\Data\Sounds\car.wav";
player.Play();

我想以某种方式使用相对路径播放该文件,但我没有成功:

SoundPlayer player = new SoundPlayer();
player.SoundLocation = @"Data\Sounds\car.wav";
player.Play();

谢谢!

5 个答案:

答案 0 :(得分:3)

应用程序根目录中的Data目录是什么? 您是将目录内容复制为输出吗?

如果是这样,你的意思是,Data\Sounds\car.wav

如果从Visual Studio运行,则在[projectroot]\[release]\bin\Data\Sounds\car.wav

如果在bin文件夹中没有看到此目录,则需要确保选择要复制到输出目录的所有文件(这将复制目录结构)。您可以通过单击项目中的文件并选择文件作为输出来完成此操作。

答案 1 :(得分:2)

毕竟你最好使用绝对路径。您可以从exe文件中获取根路径,然后将相对路径附加到它。 像这样:

// getting root path
string rootLocation = typeof(Program).Assembly.Location;
// appending sound location
string fullPathToSound = Path.Combine(rootLocation, @"Data\Sounds\car.wav");
player.SoundLocation = fullPathToSound;

答案 2 :(得分:1)

使用Path.GetFullPath("relativ/path")

获取文件的完整路径

答案 3 :(得分:0)

   //WindowsFormsApplication4.exe is name of name space this file name found in Debug file

 //you should copy your "sound.wav" into your Debug file


      string x = (Assembly.GetEntryAssembly().Location + "");
      x = x.Replace("WindowsFormsApplication4.exe", "sound.wav");
      SoundPlayer player1 = new SoundPlayer(x);
      player1.Play(); 

答案 4 :(得分:0)

这对我有用

System.Media.SoundPlayer player1 = new System.Media.SoundPlayer(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\1.wav");