它给我一个未找到的文件异常?内部资产我有“beep.wav”,但没有工作。
visual studio 2012\Projects\Myproject\Myproject\Assets
private async void beep()
{
MediaElement snd = new MediaElement();
StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
StorageFile file = await folder.GetFileAsync("beep.wav");
var stream = await file.OpenAsync(FileAccessMode.Read);
snd.SetSource(stream, file.ContentType);
snd.Play();
}
上面的代码确实有用,我只需要手动将它添加到项目中....
答案 0 :(得分:1)
当您运行应用程序时,Package.Current.InstalledLocation
将不是您的项目所在的目录(visual studio 2012 \ Projects \ Myproject \ Myproject \ Assets),而是应用程序部署到的目录(它可能类似于visual studio 2012\Projects\Myproject\Myproject\bin\Debug\AppX\Assets
)。
因此,如果您只是手动将wav文件复制到项目的Assets目录中,它就不会起作用,因为您的应用程序将在部署位置查找它。
您注意到在将wav文件添加到项目后它可以正常工作,但是将文件添加到项目中并不正是使它工作的原因。如果您将文件添加到Windows应用商店项目,并在文件的属性中将构建操作设置为内容,则该文件将获得已复制到应用的已部署位置。
您不必手动将此文件的Build Action设置为Content,因为VS会自动为某些文件类型(如wav)执行此操作,因此,该文件已复制到已部署的位置。
答案 1 :(得分:0)
您应该使用以下代码
访问存储在Asset文件夹中的文件 var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/beep.wav"));