MVC App_GlobalResources, использовать локальные и публиковать

У меня проблема с GlobalResources

  1. Я создаю папку App_GlobalResources
  2. Добавить User.resx
  3. Добавить имя = "Имя", Значение = "Имя"

По умолчанию я не могу использовать эти ресурсы в своем проекте MVC. Я старался:

  • App_GlobalResources.User.FirstName - не работает
  • Resources.User.FirstName - работает, но только в коде, когда при сборке и запуске приложения (локального) отображается ошибка:

Nie można pobrać właściwości "Имя", ponieważ lokalizacja nie powiodła się. Тип "Resources.Users" и общеизвестные, общеизвестные, статуи, имена, имена и фамилии "FirstName".

Какой его перевод:

Невозможно получить свойства "Имя", так как местоположение не удалось. Тип "Resources.Users" не является общедоступным или не содержит открытого статического свойства с именем "FirstName".

Затем я изменяю свойства User.resx:

  • Действие построения: встроенный ресурс
  • Копировать на выход: каталог не копировать
  • Пользовательский инструмент: PublicResourceProxyGenerator
  • Пространство имен пользовательских инструментов: "пусто"

Теперь я не могу использовать Resources.User.FirstName. Мне нужно использовать App_GlobalResources.User.FirstName.

Я счастлив, что это работа. Но вчера моя первая публикация на тестовом сервере и ресурсы не работают...

Файл не копируется на сервер...

Я изменяю свойства User.resx

  • Действие построения: содержание
  • Копировать на выход: каталог не копировать
  • Пользовательский инструмент: GlobalResourceProxyGenerator
  • Пространство имен пользовательских инструментов: "пусто"

Скопируйте файлы, но приложение выдает то же самое предыдущее исключение, которое я поделился выше, и ресурсы не работают в локальной машине, какой-нибудь совет?

3 ответа

Решение

Рассмотрим эти заметки о ресурсах:

Когда вы добавляете файл ресурса в App_GlobalResources специальная папка проекта ASP.NET, GlobalResourceProxyGenerator пользовательский инструмент будет использоваться для вашего ресурса, и он будет генерировать internal класс в Resources пространство имен в App_GlobalResources сборка для управления ресурсом.

  • Эти виды ресурсов являются внутренними, и их модификатор доступа не может быть изменен.
  • Их нельзя использовать для атрибутов аннотаций данных, таких как [Display] или проверочные атрибуты.

  • Их можно использовать в View или кодировать напрямую, вызывая Resources.ResourceFile.ResourceProperty,

Встроенный ресурс с ResXFileCodeGenerator как пользовательский инструмент, сгенерирует общедоступный файл ресурсов в пространстве имен, которое является пространством имен по умолчанию + иерархия папок.

  • Эти виды ресурсов являются общедоступными по умолчанию, но вы можете изменить их модификатор доступа с помощью конструктора. Также вы можете генерировать их в собственном пространстве имен, изменяя их Custom Tool Namespace имущество.

  • Их можно использовать для атрибутов аннотаций данных, таких как [Display] или проверочные атрибуты.

  • Их можно использовать в View или кодировать напрямую, вызывая SomeNamespace.ResourceFile.ResourceProperty,

Спасибо за помощь

Я сделал:

  1. Создать папку Ресурсы
  2. Переместить все ресурсы из App_GlobalResources в новую папку
  3. Измените все свойства файла:

Действие построения: встроенный ресурс

Копировать на выход: всегда копировать

Пользовательский инструмент: PublicResXFileCodeGenerator

Пространство имен пользовательских инструментов: ресурсы

Этот параметр позволил мне изменить файл Resx модификатора доступа на Public.

Сейчас проект работает на локальной машине. Файл resx во время публикации копируется в serwer. Серверное приложение работает.

Откройте файл ресурсов, измените модификатор доступа на public и не делайте его встроенным ресурсом, так как это создаст другую сборку с добавлением имени сборки проекта и суффикса.resources, что затруднит вам изменение любого ресурса значение после развертывания, сделайте его не внедренным и скопированным в выходной каталог, чтобы иметь возможность изменить файл resx позже без необходимости развертывания dll.

Другие вопросы по тегам