2009-09-22 8 views
11

私は.NETのウェブサイト使用中にRESXファイルをロードしようとしています:のResourceManager .resourcesファイルをロードしないようにしようとした.resxファイル

ResourceManager rm = new ResourceManager("Project.Resource", Assembly.GetExecutingAssembly()); 

Resource.resxファイルは、フォルダApp_LocalResourcesであるとなるように設定されていますビルド時にアセンブリに埋め込まれています。

私が使用してRESXファイルにアクセスしようとすると:

rm.GetString("key");または

rm.GetString("key", culture);が、私はエラーメッセージが表示されます:

すべてのリソースを見つけることができませんでした 適切な指定された文化のための か中性の文化。確か 「Project.Resource.resourcesが」正しく署名 を埋め込みまたはコンパイル時に アセンブリ「プロジェクト」にリンク、または が必要なすべてのサテライトアセンブリがロード可能であること、完全に たことを確認します。

ここには何が起こっているのかについてのアイデアがありますか?

+0

デザイナーファイルも作成されていませんか? –

答えて

3

私はあなたがResourceManagerを使用している方法が間違っていると思います。 これを見るpost

& Visual Studioのコマンドプロンプトを開いたときに、resgen.exeを実行すると、リソースファイルをあるフォーマットから別のフォーマット(リソースへのresx)に変換するために使用されます。 私はあなたのファイルをresx &からリソースに変換し、resourceManagerを使用してロードする必要があると思います。

+1

私は正しい軌道に乗ってくれてありがとう...私はResourceManagerを使うべきではありません 代わりに私のページの<%$ Resources:filename、key%>構文を使用しました –

1

拡張子.resxを明示的に追加します。

また、自動生成クラスを使用して、プロジェクトに適したプロパティを使用することもできます。

+0

.resxを "Project.Resource"に追加すると、Project.Resource.resx.resourcesファイルと同じエラーが表示されます。 –

+0

申し訳ありませんが、あなたの.resxがApp_LocalResourcesにあります。私のポストは適用されません... –

3

使用している.NET Frameworkのバージョンが不明です。

ResourceManagerをどのように使用するのかを説明してみてください。

ResourceManager rm = 
    new ResourceManager("Project.Resource", 
         System.Reflection.Assembly.Load("App_LocalResources")); 

これは動作するはずです。

これは、具体的なレゾルセマネージャーの自動的に生成された.designer.csクラスの静的プロパティとしても公開されています。

13

は、名前空間に

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly()); 

を指定する必要があるのResourceManagerへの.resxロードするか、そのVSがResxName.Designerが生成されます後のアクセス修飾子は、内部、内部または公共のリソースエディタを管理している場合、あなたは自由のためのResourceManagerを得ることができます。CS

var rm = ResxName.ResourceManager; 
+1

+ Designerコードを通じてリソースにアクセスする方法は1 – Boggin

4

文字列による読み取り資源の驚くほど簡単な方法があります:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey") 

それはリソースキーがあるときに、「ドット表記は」例えば(使用できないキーで読み込むリソースのためのクリーンでエレガントなソリューションですデータベースに保持されます)。

関連する問題