Как использовать скомпилированные глобальные ресурсы в ASP.NET MVC - PullRequest
14 голосов
/ 04 декабря 2009

Я хочу скомпилировать App_GlobalResources / Strings.resx в мою сборку (и в конечном итоге использовать спутниковые сборки для Strings.es.resx, Strings.fr.resx и т. Д.), Но следующая ошибка возникает после публикации приложения:

"Не удалось загрузить файл или сборку 'App_GlobalResources' или одну из ее зависимостей. Система не может найти указанный файл."

Шаги для воспроизведения:

  1. Создайте новый проект ASP.NET MVC.
  2. Добавьте папку App_GlobalResources и файл Strings.resx .
  3. Установите для действия сборки файла значение «Встроенный ресурс»
  4. Добавить строку в Strings.resx и использовать ее в HomeController.Index(), например. ViewData["Message"] = Strings.MyTest
  5. F5 для отладки, отлично работает.
  6. Публикация в IIS и (поскольку Strings.resx исключена из публикации) вы получите вышеуказанную ошибку на опубликованном сайте.

Могут ли проекты ASP.NET MVC использовать строковые ресурсы, скомпилированные в dll, и если да, то что я делаю неправильно?


Обновление: вот что я вижу в Reflector: String Resources

Так почему ResourceManager не находит их? Разве не предполагается откат к основной сборке по умолчанию?

Ответы [ 2 ]

23 голосов
/ 08 декабря 2009

Вот хорошая отправная точка 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, но я заставил его работать просто отлично. Это может быть вопросом личных предпочтений.

0 голосов
/ 05 февраля 2014

Вероятно, есть еще одна вещь, которую нужно знать о PublicResXFileCodeGenerator - он не работает с файлами, у которых в имени файла больше одной точки (см. 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 и т. Д. Остаются пустыми. Простое решение - переименовать файлы.

...