MVC App_GlobalResources, использовать локальные и публиковать
У меня проблема с GlobalResources
- Я создаю папку App_GlobalResources
- Добавить User.resx
- Добавить имя = "Имя", Значение = "Имя"
По умолчанию я не могу использовать эти ресурсы в своем проекте 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
,
Спасибо за помощь
Я сделал:
- Создать папку Ресурсы
- Переместить все ресурсы из App_GlobalResources в новую папку
- Измените все свойства файла:
Действие построения: встроенный ресурс
Копировать на выход: всегда копировать
Пользовательский инструмент: PublicResXFileCodeGenerator
Пространство имен пользовательских инструментов: ресурсы
Этот параметр позволил мне изменить файл Resx модификатора доступа на Public.
Сейчас проект работает на локальной машине. Файл resx во время публикации копируется в serwer. Серверное приложение работает.
Откройте файл ресурсов, измените модификатор доступа на public и не делайте его встроенным ресурсом, так как это создаст другую сборку с добавлением имени сборки проекта и суффикса.resources, что затруднит вам изменение любого ресурса значение после развертывания, сделайте его не внедренным и скопированным в выходной каталог, чтобы иметь возможность изменить файл resx позже без необходимости развертывания dll.