C# 对.wav文件使用Uri

C# 对.wav文件使用Uri,c#,wpf,audio,uri,C#,Wpf,Audio,Uri,我需要在wpf项目中播放一些.wav文件。以前没有Uri方面的经验,所以我被卡住了。我已将这两个.wav放在我的重新资源文件中,我声明: Uri uri2 = new Uri(@"pack://application:,,,/Resources/WindowsExclamation.wav", UriKind.Absolute); Uri uri1 = new Uri(@"pack://application:,,,/Resources/WindowsCriticalStop.wav", Ur

我需要在wpf项目中播放一些.wav文件。以前没有Uri方面的经验,所以我被卡住了。我已将这两个.wav放在我的重新资源文件中,我声明:

Uri uri2 = new Uri(@"pack://application:,,,/Resources/WindowsExclamation.wav", UriKind.Absolute);

Uri uri1 = new Uri(@"pack://application:,,,/Resources/WindowsCriticalStop.wav", UriKind.Absolute);
            var player = new MediaPlayer();
我在以下几点上提出了一个转折点:

player.Open(uri2);
player.Play();
运行代码时,我得到uri2权限的以下异常:

{"The generic authority 'application:,,,' is not a valid dns name."}

您是否尝试过使用更简单的相对Uri:


在WPF中引用XAML中的项目资源时,我发现使用这种格式通常最容易找到相关文件:

"/ReferencedAssembly;component/Subfolder/ResourceFile.type"
这也可以被引用并与Uri对象一起使用:

您还可以将此值作为字符串属性公开,然后将其数据绑定到MediaElement。源属性:


您可以从MSDN上的页面上找到更多信息。

查看MSDN文档:我已经尝试过,得到:{相对URI不支持此操作。}稍微更新了我的答案,路径应该是相对于可执行文件位置的,我假设它是bin\debug文件夹。无法使其与包uri一起工作,但相对uri确实适用于我.NET 4.5,VS2012。它与UriWindowsEquipment.wav,UriKind.relative一起工作
"/ReferencedAssembly;component/Subfolder/ResourceFile.type"
Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.type", 
    UriKind.Relative);