忍者ブログ
Slic3rの設定についてまとめてます。Slic3rの日本語版が見当たらなかったので、使い方をまとめました。 最近はC#のメモ帳代わりになってます。

C# | 埋め込まれたリソースの取得

スポンサーリンク
埋め込まれたリソースの取得でちょっとはまったのでメモ
プロジェクトはこんな感じ。

XMLFile1.xml と XMLFile2.xml  は「埋め込まれたリソース」に設定。
以下の手順で読み取る。
1.ソースが埋め込まれているAssemblyを取得する。
2.GetManifestResourceStreamでリソースを読み込む
3.リソース名は プロジェクト名.フォルダ名.ファイル名

MainProjectからXMLFile1.xmlを読みに行くには

 
            // XMLFile1が埋め込まれているアセンブリを取得
            Assembly executingAssembly = Assembly.GetExecutingAssembly();

            using (Stream stream = executingAssembly.GetManifestResourceStream(
                "MainProject.MainResourceFolder.XMLFile1.xml"))
            {
                 //略
            }

ReferenceProjectからXMLFile2.xmlを読みに行くには

 
            // XMLFile2が埋め込まれているアセンブリを取得
            Assembly executingAssembly = Assembly.GetExecutingAssembly();

            using (Stream stream = executingAssembly.GetManifestResourceStream(
               "ReferenceProject.ReferenceResourceFolder.XMLFile2.xml"))
            {
                 //略
            }

ReferenceProjectからXMLFile1.xmlを読みに行くには

 
            // XMLFile1が埋め込まれているアセンブリを取得
            Assembly executingAssembly = Assembly.GetEntryAssembly();

            using (Stream stream = executingAssembly.GetManifestResourceStream(
               "MainProject.MainResourceFolder.XMLFile1.xml"))
            {
                //略
            }
参照関係から言って、これやるぐらいなら、MainProjectでリソース読み込んで、ReferenceProjectに渡したほうが自然だよね。

MainProjectからXMLFile2.xmlを読みに行くには ...

Type.Assembly 辺りで Assembly を取得すればできるんだろうけど、ReferenceProject内でリソース返すメソッド作ったほうが自然だよね

ハマったところ

GetManifestResourceStream の引数(リソース名)でちょっとハマった


関連記事