C# で埋め込んだリソースからデータを読み取る

プロジェクトを右クリックし、追加、既存の項目
そして、ファイルの種類をすべてのファイル、にして、アセンブリファイルに埋め込みたいファイルを選択。
プロジェクトに追加されただけだと何もしないので、追加されたファイルを選択し、ビルドアクションプロパティを、埋め込まれたりソースにする。

これで、ビルドして出来た実行ファイル、DLL にファイルが埋め込まれる。
実行ファイル、DLLに埋め込んだファイルは、C# のコード上から読み込みが行える。

using System;
using System.IO;
using System.Reflection;

public static Stream GetAssemblyStream(string name)
{
    Stream stream;

    // アセンブリから読み込む努力。
    Assembly asm = Assembly.GetExecutingAssembly();
    //Assembly asm = Assembly.GetAssembly(typeof(Program)); // 自分のクラスを指定

    // 何もせずにアセンブリから取れたなら返す。
    stream = asm.GetManifestResourceStream(name);
    if (stream != null)
    {
        return stream;
    }

    // パスとかいじってアセンブリから取ろうとする。
    string fullname = asm.FullName;
    string[] asmname = fullname.Split(",".ToCharArray());

    if (asmname.Length >= 2)
    {
        name = name.Replace("/", ".").Replace("\\", ".");
        name = asmname[0] + "." + name;
        stream = asm.GetManifestResourceStream(name);

        return stream;
    }

    // どれもダメだったら null
    return null;
}

例えば、このメソッドを使って、画像のリソースを埋め込んだ場合は、次のようなコードで Bitmap クラスとして扱える。

Bitmap bmp = Bitmap.FromStream(GetAssemblyStream("umekomareta.jpg"))