2016-10-07 8 views
2

У меня есть проблема с GlobalResourcesMVC App_GlobalResources, использовать местные и публиковать

  1. создать папку App_GlobalResources
  2. Добавить User.resx
  3. Добавить Name = "ПгвЬЫате", Value = "Имя"

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

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

Nie można pobrać właściwości „Name”, ponieważ lokalizacja nie powiodła się. Typ „Resources.Users” nie jest publiczny lub nie zawiera publicznej, statycznej właściwości ciągu o nazwie „FirstName”.

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

Unable to retrieve the properties "Name" as the location failed. Type "Resources.Users" is not a public or does not contain a public static property within named "FirstName."

Тогда я меняю User.resx пропеллер erties:

  • Сложение Действие: Embedded Resource
  • Копировать для вывода: каталог Не копировать
  • Выборочная инструмент: PublicResourceProxyGenerator
  • пользовательского инструмента Пространство имен: "пустой"

Теперь я могу Использовать Ресурсы.User.FirstName У меня есть useApp_GlobalResources.User.FirstName

Я счастлив, что это работа. Но вчера мой первый публиковать на тестовом сервере и ИСКОПАЕМЫЕ не работает ...

Файл does't скопировать на сервер ...

меняю User.resx Свойства

  • Build Action: Содержание
  • Копия для вывода: Каталог не копируйте
  • Выборочная Инструмент: GlobalResourceProxyGenerator
  • пользовательского инструмента Пространство имен: "пустой"

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

+0

Вы помогли мне, задав эти вопросы, потому что я попробовал и больше не знал по умолчанию «Свойства»: D и вернул настройки по умолчанию для меня. –

ответ

1

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

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

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

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

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

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

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

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

-1

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

1

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

я сделал:

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

Сложение Действие : Встроенный ресурс

Копия для вывода: Копия всегда

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

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

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

Теперь проект работает на локальной машине. Файл resx во время публикации обрабатывает server. Серверное приложение - это работа.

+0

* Возможно создание шаблона для нового resx файл? * Да, есть решения для упрощения задачи. Вы можете создать новый ItemTemplate или манипулировать существующим ItemTemplate, чтобы выполнить то, что вам нужно. –

+0

Если вам нужна дополнительная помощь на * Возможно создание шаблона для нового файла resx? * Добавьте новый вопрос, содержащий выше описание и задайте свой вопрос. Каждый пост stackoverflow (поток) посвящен одному вопросу. Для получения дополнительной информации см. [Одно сообщение с несколькими вопросами или несколькими сообщениями?] (Http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts) :) –

+0

Также обычно вам не нужно публиковать заключение. Но ваш ответ на этот пост был в порядке и полезен, поэтому я поддержал его. –