C#中的內部資源和外部資源

來源:互聯網
上載者:User

Visual C# 應用程式中經常會包含非原始碼的資料。此類資料稱為“項目資源”,它可以包含應用程式所需的位元據、文字檔、音頻或視頻檔案、字串表、表徵圖、映像、XML 檔案或任何其他類型的資料。項目資源資料以 XML 格式儲存在 .resx 檔案中(預設檔案名稱為 Resources.resx),可在“方案總管”中開啟此檔案。有關項目資源的更多資訊,請參見使用資源檔。

向項目中添加資源

可以將資源添加到項目中,方法是:在“方案總管”中,在該項目下右擊“屬性”節點,單擊“開啟”,再單擊“專案設計工具”中“資源”頁上的“添加資源”按鈕。

可以將資源作為連結的資源(外部檔案)或內嵌資源(直接嵌入到 .resx 檔案中)添加到項目中。

  • 在添加連結的資源時,儲存項目資源資訊的 .resx 檔案僅包含指向磁碟上資源檔的相對路徑。如果將映像、視頻或其他複雜檔案作為連結的資源進行添加,則可以使用預設編輯器編輯它們,可在資源設計器中為檔案類型設定關聯的預設編輯器。

  • 當添加內嵌資源時,資料直接儲存到項目的資源 (.resx) 檔案中。字串只能作為內嵌資源進行儲存。

有關更多資訊,請參見連結的資源與內嵌資源和.Resx 檔案格式中的資源。

編輯資源

關聯用於編輯各個資源的預設應用程式之後,資源設計器就允許您在開發過程中添加和修改項目資源。右擊“方案總管”中的“屬性”,然後單擊“開啟”,再單擊專案設計工具中的“資源”選項卡,可以訪問資源設計器。有關更多資訊,請參見“專案設計工具” ->“資源”頁。下面的圖示顯示了資源設計器菜單選項:

若要編輯內嵌資源,必須直接處理 .resx 檔案來操作每個字元或位元組。這就是為什麼在開發過程中將複雜檔案類型儲存為連結的資源更為方便的原因。可以使用 二進位編輯器 以十六進位或 ASCII 格式在二進位層級上編輯資源檔(包括 .resx 檔案)。可以使用 影像編輯器 編輯作為連結的資源儲存的表徵圖、游標以及 .jpeg 和 GIF 檔案。您還可以選擇使用其他應用程式作為這些檔案類型的編輯器。有關更多資訊,請參見在資源編輯器中查看和編輯資源。

將資源編譯為程式集

當您產生應用程式時,Visual Studio 會調用 resgen.exe 工具,將應用程式資源轉換為稱為 Resources 的內部類。此類包含在 Resources.Designer.cs 檔案中,而該檔案嵌套在“方案總管”中的 Resources.resx 檔案下。Resources 類將所有項目資源封裝到靜態唯讀 get
屬性中,作為在運行時提供強型別資源的方式。當通過 Visual C# IDE 進行產生時,所有封裝的資源資料(包括嵌入到 .resx
檔案中的資源和連結的檔案)都被直接編譯到應用程式程式集(.exe 或 .DLL 檔案)中。換句話說,Visual C# IDE 總是使用 /resource 編譯器選項。如果從命令列進行產生,則可以指定 /linkresource 編譯器選項,以便將資源部署為主應用程式程式集之外的單獨檔案。這是一種進階應用程式方案,僅在某些很少見的情況下才需要使用。將資源與主應用程式程式集分開部署的一種更為常見的方案是使用附屬組件,如下所述。

在運行時訪問資源

若要在運行時訪問資源,只需像引用任何其他類成員一樣引用該資源即可。下面的樣本顯示如何檢索名為 Image01 的位元影像資源。請注意,資源類位於名為 <項目名稱>.Properties 的命名空間中,因此,要麼每個資源都使用完全限定名,要麼在作為資源類訪問來源的源檔案中添加適當的 using 指令。

System.Drawing.Bitmap bitmap1 = myProject.Properties.Resources.Image01;

在內部,get 屬性使用 ResourceManager 類建立對象的新執行個體。

有關更多資訊,請參見應用程式中的資源和資源檔產生器 (Resgen.exe)。

附屬組件中的資源

如果您正在建立需要本地化(翻譯)為多種語言的應用程式,可以將每組
特定於地區性的字串作為資源儲存在它本身的附屬組件中。當您分發應用程式時,其中應包含主應用程式程式集和任何相應的附屬組件。然後您可以在不重新
編譯主應用程式程式集的情況下,添加其他附屬組件或修改現有的附屬組件。有關更多資訊,請參見建立附屬組件和定位和使用特定地區性的資源。

——————————————————————————————————————————————————————————————————

外部資源就是以檔案夾形式存放的,通過程式訪問的資源!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.