我在相对路径和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();
谢谢!
答案 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)
答案 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");