您好我有一个wpf应用程序,可以在按钮点击等事件上播放声音。我现在的代码现在播放声音文件,但我意识到它必须在另一个文件夹中,例如,如果用户删除,使应用程序几乎无法使用。 我想知道,如果不在应用程序发布目录中创建一个全新的文件夹,我怎么能得到一个.wav文件。 有任何想法吗? 感谢。
答案 0 :(得分:0)
如果.wav文件在根目录中添加到项目中,则标记为内容(右键单击.wav文件并单击属性。然后将构建操作更改为内容)然后将其直接复制到根输出夹
您可以在代码或XAML中引用wav文件作为相对路径(简单的“Myfile.wav”)
我相信这就是你要求的?
答案 1 :(得分:0)
如何将.wav文件作为嵌入式资源放入dll中?
只需将文件添加到项目中,右键单击该文件并将 Build Action 设置为 Embedded Resource 。
然后您可以将.wav文件作为流加载并将其保存到光盘中,如下所示:
private void WriteEmbeddedResourceToFile(string writePath, string assemblyName)
{
Assembly asm = Assembly.GetExecutingAssembly();
Stream s = asm.GetManifestResourceStream(assemblyName);
if (s != null)
{
var file = new byte[s.Length];
s.Read(file, 0, (int)s.Length);
File.WriteAllBytes(writePath, file);
s.Close();
}
}
字符串 assemblyName 必须像这样设置: namespace。(如果你把文件放在一个文件夹中,在这里插入文件夹子路径).filename.wav
或者,您可以将其保存到光盘,然后直接使用该流:
private byte[] GetEmbeddedResource(string assemblyName)
{
Assembly asm = Assembly.GetExecutingAssembly();
Stream s = asm.GetManifestResourceStream(assemblyName);
if (s != null)
{
var file = new byte[s.Length];
s.Read(file, 0, (int)s.Length);
s.Close();
return file;
}
}
然后,当你想加载文件时,GetEmbeddedResource将返回字节数组。