C#でリソースファイルからテキストを取得する
いつも忘れてしまうのでメモ。
VSでファイルを追加してプロパティのビルドアクションを「埋め込まれたリソース」にするのを忘れないこと。
//現在のコードを実行しているAssemblyを取得
System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
//ネームスペースがkj.sample、リソース名がtest.xmlの場合
System.IO.StreamReader sr = new System.IO.StreamReader(myAssembly.GetManifestResourceStream("kj.sample.test.xml"), Encoding.UTF8);
if (sr == null) throw new Exception("リソースを取得できない");
string s = sr.ReadToEnd();
sr.Close();
リソースの一覧の取得方法もメモ。
//指定されたマニフェストリソースを読み込む
string[] resnames=myAssembly.GetManifestResourceNames();
foreach (string res in resnames) {
Console.WriteLine("resource {0}",res);
}