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

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