2011-07-26 25 views
1

在我的項目中,我有一些需要播放一些音頻文件的WPF/XAML控件的DLL。現在,用SoundPlayer我可以使這些音頻文件的DLL(也包含WPF控件)的「嵌入式資源」。但是,SoundPlayer有一些嚴重的限制,所以我切換到MediaPlayer使用DLL資源的WPF MediaPlayer

不幸的是,MediaPlayer幫助頁面指出MediaPlayer無法使用資源。 (無論如何,我嘗試使用Pack URIs,但這不起作用 - 至少沒有我嘗試過的組合)。因此,現在,我正在將DLL資源(音頻文件)寫入臨時文件,然後使用MediaPlayer ,但這是恕我直言,不是一個「好」的解決方案。

所以,我想知道是否有一個「正確」的方式在WPF MediaPlayer將音頻文件放入一個DLL項目。

幫助頁面聲明(音頻)文件應標記爲「內容」並使用「複製到輸出目錄」,但顯然這隻適用於屬於EXE項目的文件。它不適用於DLL項目。

回答

1

當您發現MediaPlayer不支持從資源加載媒體時。

最簡單的選擇是將聲音文件與您的應用程序一起分發並將它們放在應用程序文件夾中 - 內容/「複製到輸出目錄」就是這樣做的。

如果你達到了Visual Studio構建系統的限制,你可以自己複製這些文件(將它們拖放到exe項目的bin/Debug或bin/Release中)或者寫一個批處理文件來複制它們並將其用作後期製作操作。

顯然,當您將應用程序發送給最終用戶時,您必須確保文件已正確複製。

如果您正在編寫一個要由其他開發人員使用的DLL,並且您不希望手動文件複製成爲開發人員安裝過程的一部分,則始終可以使用指向文件位置的註冊表項(由DLL的安裝程序) - 如果缺少註冊表項,則會回退到EXE文件夾(因此EXE開發人員仍然必須將這些文件與EXE捆綁在一起,但不需要在開發過程中混淆任何內容)。

而且,當然,如果您必須將DLL作爲一個文件獨立程序包,則只剩下您已經使用的「提取到臨時文件夾」選項。

+0

那麼,既然沒有人回答了這個問題,我想你的就是答案。 –

+0

@Sebastian Krysmanski - 對不起,這不是一個更有幫助的答案 – Nir