アセンブリに埋め込みリソースとして組み込んだファイルは、GetManifestResourceStream
メソッドで Stream として取得できます。
この時、ファイル名を文字列で指定するのですが、このファイル名はどのように決まっているのでしょう?
■ 結論
{デフォルトnamespace}.{プロジェクト内でのディレクトリ}.{ファイル名}
■ 確認コード
確認してみます。
ファイルの配置は次のように Resources
フォルダを作成し、その中に voice.m4a
ファイルを配置しています。
検証コードです。
namespace XFSimpleAudio { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); using (var stream = typeof(App).Assembly.GetManifestResourceStream("XFSimpleAudio.Resources.voice.m4a")) System.Console.WriteLine($"XFSimpleAudio: stream is {stream}"); using (var stream = typeof(App).Assembly.GetManifestResourceStream("XFSimpleAudio2.Resources.voice.m4a")) System.Console.WriteLine($"XFSimpleAudio2: stream is {stream}");
プロジェクト作成後、特に設定を変えていない場合の出力
設定を変更していないので、デフォルトnamespace は XFSimpleAudio
です。
XFSimpleAudio: stream is System.Reflection.Assembly+UnmanagedMemoryStreamForModule
XFSimpleAudio2: stream is
先頭が XFSimpleAudio
の場合は取得できています。XFSimpleAudio2
の場合は取得できていません。
デフォルトnamespace を変更した場合の出力
次のように、デフォルトnamespace を XFSimpleAudio2
に変更した場合、
XFSimpleAudio: stream is
XFSimpleAudio2: stream is System.Reflection.Assembly+UnmanagedMemoryStreamForModule
先頭が XFSimpleAudio2
の場合に値が取得されるようになりました。