テキストファイルやXMLファイルなど、全てのファイルはアセンブリに埋め込んで利用することができる。
ファイルをアセンブリに埋め込むには、ファイルのプロパティ項目の [ ビルド アクション ] を、 " 埋め込まれたリソース " に設定してビルドする。
埋め込まれたリソースを利用するには、以下のようにリフレクションを利用する。
埋め込まれたリソース"Hoge.txt"を取得する例
using System;
using System.IO;
using System.Reflection;
namespace YokoKen.Sample
{
static class Program
{
void Main()
{
string outputText;
Assembly thisAssembly = Assembly.GetExecutingAssembly();
using (Stream resourceStream = thisAssembly.GetManifestResourceStream("YokoKen.Sample.Hoge.txt"))
{
using (StreamReader resourceReader = new StreamReader(resourceStream))
{
outputText = resourceReader.ReadToEnd();
}
}
Console.WriteLine(outputText);
Console.ReadLine();
}
}
}
注意すべきは、AssemblyオブジェクトのGetManifestResourceStreamメソッドに渡すファイル名には、名前空間を含める必要があるということだ。この名前空間はプロジェクトのプロパティ項目の [ 規定の名前空間 ] に設定してある名前空間(サブディレクトリに配置した場合、これにディレクトリ階層が加えられた名前空間)である。
ありがとう。助かりました。
2013.04.17 10:34 URL | 同業者 #- [ 編集 ]
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/26-2439866d
C#で埋め込まれたリソースにアクセスする。
http://csharper.blog57.fc2.com/tb.php/26-2439866d を参考にしていただきました。 プロジェクト名 + リソースの相対パス かと思ってましたが、正しくは、 プロジェクトの既定の名前空間 + リソースの相対パス でした。DBFluteの外だしSQLのリソースパス指定ではまっ
2008.08.29 17:56 | mtaoの三分間日記。