在WP開發當中我們常常會遇到圖片無法顯示,視頻、音樂無法播放,可地址明明是正確的啊,究其原因呢,經過MSDN考證原來是Build Action的設定不當引起的。
在資源檔上點擊右鍵,選擇Properties即開啟屬性視窗,如:
在WP資源檔的Build Action中,我們經常會用到下面幾種情況:
- None:此檔案將被忽略不參與編譯和輸出
- Compile:檔案將被編譯為Microsoft 中繼語言(IL),如副檔名為cs的檔案
- Content:檔案將會打包進xap檔案當中,以獨立檔案使用
- Page:在WP當中,xaml分頁檔都屬於Page,除App.xaml檔案外
- Resource:檔案將被編譯到xap檔案包的.dll檔案內
我們該如何選擇資源檔的Build Action?
在講之前我們不得不說一下關於在Content和Resource情況下訪問資源檔的路徑方式;
- Content:訪問資源檔的路徑方式相對簡潔一些,如"/../.."
- Resource:訪問資源檔的路徑方式繁瑣一些,如"/PhoneApp1;component/Images/back.png",PhoneApp1是項目名稱,component是固定名稱
圖片檔案
上一節當中講到過在WP當中,ApplicationBar與SilverLight的層次是完全分開的,那麼這就要分兩種情況了:
ApplicationBar的表徵圖檔案應設定為Content方式,SilverLight層次當中應設定為Resource的方式。
多媒體檔案
比如音樂,視頻檔案,這些資源檔應設定為Content方式。
原因是什麼呢?微軟給出的解釋是:
Set Build Action to Content for Media
Media processing on Windows Phone is optimized to use files and network streams, but not in-memory streams. This means that any media files included in the application, such as sound effects, should have their Build Action set to Content and not Resource.
詳細請參考Performance Considerations in Applications for Windows Phone