14

App_GlobalResources/Strings.resxをアセンブリにコンパイルしたい(そして最終的にStrings.es.resx、 Strings.fr.resxなどのサテライト アセンブリを使用する) 必要がありますが、アプリが公開されると次のエラーが発生します。

「ファイルまたはアセンブリ 'App_GlobalResources' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。」

再現する手順:

  1. 新しい ASP.NET MVC プロジェクトを作成します。
  2. App_GlobalResources フォルダーとStrings.resxファイルを追加します。
  3. ファイルのビルド アクションを「埋め込みリソース」に設定します。
  4. 文字列をStrings.resxHomeController.Index()に追加し、で使用します。ViewData["Message"] = Strings.MyTest
  5. F5 でデバッグ、正常に動作します。
  6. IIS に発行すると ( Strings.resxは発行から除外されるため)、発行されたサイトで上記のエラーが発生します。

ASP.NET MVC プロジェクトは、dll にコンパイルされた文字列リソースを使用できますか? もしそうなら、何が間違っていますか?


更新: リフレクターに表示される内容は次のとおりです。 文字列リソース

では、 ResourceManagerがそれらを見つけられないのはなぜでしょうか? デフォルトでメイン アセンブリにフォールバックすることになっていませんか?

4

2 に答える 2

24

これが良い出発点です http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx

あなたが言及したのと同じようにプロジェクトをセットアップしましたが、IIS6 にデプロイしたときにまったく同じエラーが発生しました。スコットの提案に従って変更Custom ToolするPublicResXFileCodeGeneratorと、問題Custom Tool Namespaceが解決しました。Resources

また、App_GlobalResources の排除に関して Scott のリードに従いますが、問題なく動作するようになりました。それは個人の好みの問題かもしれません。

于 2009-12-07T22:48:00.783 に答える
0

おそらく、PublicResXFileCodeGenerator について知っておくべきことがもう 1 つあります。ファイル名に複数のドットが含まれるファイルでは機能しません ( http://social.msdn.microsoft.com/Forums/ru-RU/9412f049を参照)。 -acd8-4a77-b73a-f3810df18376/naming-resources-files-issue-aspnet-mvc-3?forum=dlr )。したがって、Strings.es.resx、Strings.fr.resx などの分離コードは空のままです。簡単な解決策は、ファイルの名前を変更することです。

于 2014-02-04T21:39:39.487 に答える