在我的项目中,我有一个DLL用于一些需要播放一些音频文件的WPF / XAML控件.现在,使用
SoundPlayer
我可以制作DLL的这些音频文件“Embedded Resources”(也包含WPF控件).但是,SoundPlayer有一些严重的限制,所以我切换到
MediaPlayer
.
不幸的是,MediaPlayer帮助页面指出MediaPlayer无法使用资源. (我尝试使用Pack URIs,但这不起作用 – 至少没有我尝试过的组合.)所以,现在,我正在将DLL资源(音频文件)写入临时文件,然后将它们与MediaPlayer一起使用,但那是恕我直言,不是一个“好”的解决方案.
所以,我想知道WPF中是否有一种“正确”的方式,MediaPlayer将音频文件放在DLL项目中.
帮助页面指出(音频)文件应标记为“内容”并使用“复制到输出目录”,但显然这仅适用于属于EXE项目的文件.它不适用于DLL项目.
正如您所发现的,MediaPlayer不支持从资源加载媒体.
原文链接:https://www.f2er.com/windows/371717.html最简单的选择是将声音文件与您的应用程序一起分发并将它们放在应用程序文件夹中 – Content /“Copy to Output Directory”就是这样做的.
如果你达到Visual Studio构建系统的限制,你可以自己复制文件(将它们拖放到exe项目的bin / Debug或bin / Release folser中)或者编写一个批处理文件来复制它们并将其用作构建后的行动.
显然,当您将应用程序发送给最终用户时,您必须确保正确复制文件.
如果您正在编写DLL以供其他开发人员使用,并且您不希望手动文件复制成为开发人员安装过程的一部分,则可以始终使用指向文件位置的注册表项(由DLL安装程序设置) – 如果缺少注册表项,则回退到EXE文件夹(因此EXE开发人员仍然必须使用EXE捆绑文件,但在开发过程中不需要乱用任何内容).
当然,如果您必须将DLL作为一个文件独立包,那么您只能使用已经使用的“extract to temp folder”选项.