5

我在相对路径和 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();

谢谢!

4

5 回答 5

6

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

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

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

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

于 2013-04-17T17:00:45.977 回答
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;
于 2013-04-17T17:19:02.100 回答
2

使用Path.GetFullPath("relativ/path")获取文件的完整路径

于 2013-04-17T17:11:51.230 回答
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(); 
于 2014-04-12T13:18:16.120 回答
0

这对我有用

System.Media.SoundPlayer player1 = new System.Media.SoundPlayer(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\1.wav");
于 2020-10-07T13:05:03.660 回答