App_GlobalResources Глобализация
У меня есть некоторые проблемы с глобализацией. Я унаследовал очень старый проект в ASP.NET 2.0. Он имеет несколько файлов глобализации для нескольких языков.
Однако когда я создаю приложение для развертывания, оно отлично работает в нашей тестовой среде. Но когда мы копируем приложение в производственную среду, оно выдает ошибку в <% $ Resources: Global, MyStringHere%>.
Заявление о том, что MyStringHere не был найден в файле ресурсов.
Почему это нормально работает в средах разработки и тестирования, а не в производстве? Файлы одинаковы в разных средах (хотя файлы inetpub расположены в разных каталогах на каждом компьютере).
У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ:
Очень странно. Если я называю ресурс из кода позади.
public string _MyStringName = Resources.Global.MyStringHere;
Это прекрасно работает во всех средах.
Но, используя старый:
<%$Resources: Global, MyStringHere %>
Ошибка только в производстве.
2 ответа
Просто выстрел в темноте, но есть ли у вас ключ, настроенный на основе имен среды или машины? Мы делаем это во многих наших проектах. Некоторые из наших проектов будут выполняться только в определенных условиях по определенной причине. Еще одно предположение - проверить, есть ли у вас #if(DEBUG) где-то пропускающий код.
Вы уверены, что ваши файлы.resx из App_GlobalResources скопированы на сайт развертывания? Файлы App_GlobalResources обычно предполагается использовать с Build Action = Content, а не Build Action = Embedded Resources.
На вашей машине разработки работает настройка Embedded Resources, потому что файлы все еще физически находятся в App_GlobalResources и встроены. Встроенные ресурсы просто игнорируются. Это может создать ложное впечатление, что ваши действия по сборке настроены правильно.