1

Resourcesフォルダーから画像を動的に読み込もうとしていますが、何らかの理由でGetManifestResourceStreamnullが返されます。これは私が書いたものです:

System.Reflection.Assembly asm;
asm = System.Reflection.Assembly.GetExecutingAssembly();
Bitmap bmp = new Bitmap(asm.GetManifestResourceStream("MyProject.Properties.Resources.Image.png"));

ここで見つけたすべての方法を試しましたが、うまくいきません。パスは正しく、ファイルはそこにあります。ユーザーのアクセス許可に応じて、さまざまなアセンブリが読み込まれるため、これを動的に行う必要があります。つまり、基本的に2つ必要です。

  1. ロードされたすべてのアセンブリのリストを取得します
  2. ロードされたアセンブリに対応するイメージをビットマップにロードします

これはどのように行うことができますか?

4

1 に答える 1

1

これは通常、リソース名が正しくないことを意味します。アセンブリをildasmにロードし、「。mresources」セクションのマニフェストを見て、ロードするものを見つけます。

そうでない場合、GetExecutingAssemblyを呼び出すと、現在実行中のコードを含むアセンブリが返されます。これは、リソースを含むDLLとは異なる場合があります。代わりに、 GetCallingAssemblyを使用して別のDLLからロードします。

上記の質問に答えるには:

  1. ロードされたすべてのアセンブリのリストを取得します

AppDomain.GetAssembliesメソッドを使用します。次に例を示します。

Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
  1. ロードされたアセンブリに対応するイメージをビットマップにロードします

GetManifestResourceStreamを使用して、リソースを探してアセンブリを繰り返し処理します。

于 2012-09-17T12:27:34.653 に答える