IIS Expressで適切にローカライズするアプリケーションがありますが、サーバー(IIS 7.5)に展開した後にエラーメッセージが表示されますが、式の構文を使用している場合のみ<asp:localize id="fooctrl" text="<%$ Resources:SiteResources, Foo_Key %>" runat="server" />
です。IIS Expressで実行されているローカルマシンでは、これは非常にうまく機能します。ただし、サーバーにデプロイすると、エラーが発生します。
キー'Foo_Key'のリソースオブジェクトが見つかりませんでした。
次のような問題なしに、コードビハインドのリソースキーにプロパティを設定できます。
fooctrl.Text = SiteResource.Foo_Key;
リテラルサーバー側タグまたはエンコードされたサーバー側タグを使用してリソース文字列を問題なく出力することもできます。
<%= SiteResource.Foo_Key %>
<%: SiteResource.Foo_Fey %>
動作していないように見えるのは式の構文だけなので、デプロイメントの問題ではないと思います。何が間違っているのか、または何がデプロイされた動作を引き起こしているのかを理解したいのですが?コードビハインドでサーバーコントロールのローカライズされたプロパティをすべて設定する必要はありません。
詳しくは
sh_tsとgr_nsの場合、App_GlobalResourcesフォルダーをサーバーにコピーしました。私のエラーはなくなりました。そのため、リソースビルドアクションをからEmbedded Resource
に変更Content
して、アプリケーションで公開されるようにしました。フォルダーとresxファイルは公開後にサーバーに実際に表示されましたが、「指定されたカルチャまたはニュートラルカルチャに適切なリソースが見つかりませんでした」というエラーが表示されました。
そのため、組み込みリソースについて少し混乱しました。サーバー上にリソースファイルが必要な場合、実際には何が埋め込まれていますか?リソースを埋め込むだけでなく、Visual Studio2012のPublishWebでリソースを同時にコンパイルし、コンテンツであるかのようにファイルをコピーするにはどうすればよいですか?そのための設定が見つかりません。
さらに詳しい情報
今日、リソースを外部アセンブリに移動して、Webアプリケーションに加えて他のサポートアセンブリのローカライズをサポートしました。Webアプリからリソースファイルを削除し、該当するすべてのプロジェクトへの参照を追加し、参照を更新しました。すべてがIISExpressの大ヒット作のように機能しました。Webアプリケーションは素晴らしいローカライズされ、外部アセンブリは素晴らしいローカライズされましたが、IIS 7.5に展開したときに、Webアプリはローカライズできませんでした。式の構文については、以前と同じように扱います。.resxファイルを再度デプロイすると、エラーが解決しました。
何が問題なのかわかりません。私が知る限り、リソースは正しく、次のとおりです。
JetBrains dotPeekを使用してリソースアセンブリを逆コンパイルしたところ、それぞれに値が含まれている埋め込みXMLを確認できます。