2009年9月3日 星期四

在C#中的封裝資源檔

在程式裡面有時候會用到圖檔或是影片之類的資源檔
但是由於安全或是方便的考量
不希望把這些檔案放在執行檔(.exe)或程式庫(.dll)之外
C#提供了很方便的方式讓使用者可以輕易的將這些檔案加入專案

選取想要加入的檔案即可
當然,如果不喜歡一堆檔案放在一起,也是可以用資料夾整理起來的

這時候只要在方案總管(Solution Explorer)裡面選取該檔案
然後在屬性視窗(Properties Window)選擇建置動作(Build Action)

這時候就需要依照檔案的種類以及讀取的方式來決定要怎麼選擇
一般來說,如果是圖檔的話,建議在WPF專案就選擇Resource
而C# form專案則是選內嵌資源(Embedded Resource)
選項說明
無(None)檔案未包含在專案輸出群組中,而且在建置過程中不加以編譯,例如讀我檔案(.txt)
編譯(Compile)將檔案編譯到建置輸出,例如程式碼檔(.cs)
內容(Content)不編譯檔案,但會將其加入內容輸出群組,例如網頁檔案(.htm)
嵌入資源
(Embedded Resource)
將檔案以 DLL 或可執行檔嵌入主要專案建置輸出,例如影像檔案(.bmp)
ApplicationDefinition定義應用程式相關屬性所用,轉換後編譯,例如tag為Application的xaml檔案(.xaml)
Page定義視窗或控制項等頁面相關屬性所用,轉換後編譯,例如tag為Window的xaml檔案(.xaml)
SplashScreen在程式載入時先顯示的畫面,將檔案嵌入主要專案建置輸出,例如影像檔案(.bmp)
Resource將檔案以分享的方式嵌入主要專案建置輸出,例如影像檔案(.bmp)
EntityDeployEntity Framework的建置工作,可以內嵌為資源或是寫入檔案中,例如內嵌檔案(.edmx)

--
參考資料
檔案屬性
What are the various 「Build action」 settings in
VS.NET project properties and what do they do?

EntityDeploy 類別
圖檔資源載入與不規則 Form 的製作

1 則留言:

  1. 請問一下

    我的程式每次一打開就要打開一個文字檔, 但我又不想把檔案位置寫死, 所以我想把該檔案加到專案, 但是加好後卻不知道怎麼樣才能得到檔案所在的位置?

    回覆刪除