.resources 為二進位資源格式,可儲存字串、圖片、圖示等資料。透過 ResourceWriter 建立、ResourceManager 讀取,適合部署時攜帶非程式碼資產。
using System.Resources;
using System.Drawing;
public void CreateResourceFile()
{
using (var writer = new ResourceWriter("MyResources.resources"))
{
// 加入字串
writer.AddResource("AppTitle", "我的應用程式");
writer.AddResource("WelcomeMsg", "歡迎使用!");
// 加入圖片
using (var img = Image.FromFile(@"F:\ym.jpg"))
{
writer.AddResource("Logo", img);
}
// 加入位元組陣列
writer.AddResource("ConfigData", File.ReadAllBytes(@"F:\config.json"));
writer.Generate(); // 寫入磁碟
}
}
public void UseResources()
{
// 方式 1:直接讀取 .resources 檔
using (var reader = new ResourceReader("MyResources.resources"))
{
foreach (DictionaryEntry entry in reader)
{
Console.WriteLine($"{entry.Key} = {entry.Value}");
}
}
// 方式 2:嵌入組件並透過 ResourceManager 存取(推薦)
var rm = new ResourceManager("MyResources", Assembly.GetExecutingAssembly());
string title = rm.GetString("AppTitle");
Image logo = (Image)rm.GetObject("Logo");
byte[] config = (byte[])rm.GetObject("ConfigData");
}
Resources.resx 與 Resources.Designer.csProperties.Resources.Logo、Properties.Resources.AppTitle建立 Resources.zh-TW.resx、Resources.en-US.resx 等文化特性資源檔,ResourceManager 會依 Thread.CurrentUICulture 自動選擇。
// 自訂 ResourceReader/Writer 實作加密儲存
public class EncryptedResourceWriter : ResourceWriter
{
// 覆寫 Generate() 加入加密邏輯
}
Properties.Resources),獲得編譯期檢查與 IntelliSense基底名稱.文化特性.resx 慣例