2009-04-16 13 views
1

私のプロジェクト用の文字列リソースを含む.resxファイルがあります。実行時に、このファイルに定義されているすべてのリソースを読み込み、それらをコンテナに格納したいと考えています。その理由は重要ではありません。実行時に.NET埋め込みリソースの内容を列挙する

バイナリの.resourceファイルで動作するResourceReaderクラスについて読んだことがあります。私の印象は、.resxがビルド時にバイナリ形式に変換され、アセンブリに埋め込まれていることです。これは本当ですか、またはresgenで手動で生成する必要がありますか?手動で生成する必要がある場合、VSプロジェクトに追加してアセンブリに埋め込み、実行時にアクセスするにはどうすればよいですか?

要するに、ResourceReaderを使用して実行時に.resxで定義されたリソースにアクセスするにはどうすればよいですか?

答えて

3

ResourceReader.GetEnumerator()を使用すると、リソースに列挙子を取得できます。

.resxファイルを直接読み込む場合は、ResourceReaderの代わりにResXResourceReaderを使用することを検討してください。

コンパイル済みの.resources(resx - > resources)から読み込もうとしている場合は、名前を適切に変更する必要があります。しかし、それはつまり、プロジェクト名を追加します、

var resManager = new ResourceManager("MyRes.resources"); 

RESXファイルは、サテライトアセンブリ内にある場合:あなたはあなたが使用したいと思う、「MyRes.resxを」ファイルの.resx名前を言う("MyProject.MyRes.resources");

あなたがローカライズを使用している場合は、あまりにも、それをする必要があります:はい("MyProject.MyRes.en-GB.resources");

+0

が、最初私はそれを.resourceファイルのパスを渡すことでResourceReaderを構築する必要があります。 .resxファイルを作成しましたが、.resourceファイルの元の場所がわかりません。 – Odrade

+0

私はresgenで単純に生成してプロジェクトに追加することを考えましたが、バイナリリソースがアセンブリに埋め込まれていると考えました。私は何かを誤解しているに違いない。 – Odrade

+0

.resourceファイルは、ビルド時にリソースファイルジェネレータによって生成されます。http://msdn.microsoft.com/en-us/library/ccec7sz1(VS.80).aspx – Lucero

関連する問題