Start Debugging
2020-11-20 更新日 2023-11-05 csharp Edit on GitHub

.NET Core で Embedded Resource の Stream を取得する

リソース名の構成を理解し、GetManifestResourceStream を使って .NET Core で埋め込みリソースのストリームを取得する方法を学びます。

.NET Core で埋め込みリソースを取得するには、まずリソース名がどのように構成されているかを理解する必要があります。すべてピリオド (.) で連結された 3 つの要素から成ります。

具体的な例を見てみましょう。ルート名前空間が MyApp.Core のプロジェクト (アセンブリ) があるとします。プロジェクト内には Assets > Images のようなフォルダーとサブフォルダーがあり、その中に logo.png という埋め込みリソースがあります。この場合は次のようになります。

これらを . で連結すると MyApp.Core.Assets.Images.logo.png になります。

リソースの識別子がわかれば、あとは実際のリソースを含むアセンブリへの参照があれば十分です。これはそのアセンブリ内に定義された任意のクラスから簡単に取得できます。MyClass というクラスがあると仮定します。

typeof(MyClass).Assembly.GetManifestResourceStream("MyApp.Core.Assets.Images.logo.png")

アセンブリ内のすべての埋め込みリソースの一覧を取得する

リソースが見つからない場合、原因はたいてい次のいずれかです。

調査の助けとして、アセンブリ内のすべての埋め込みリソースを一覧表示し、そこから進めることができます。次のようにします。

typeof(MyClass).Assembly.GetManifestResourceNames()

これは単純な string[] を返すので、Immediate Window でデバッグ目的に手軽に使えます。

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< 戻る