Ответ 1
У меня была такая же проблема, и мне пришлось внести два изменения в свойства файла resx.
- Задайте "Построение действия" для содержимого
- Установите "Копировать в каталог вывода" для копирования всегда
У меня есть веб-проект, запущенный в VS 2008. У нас есть несколько глобальных файлов ресурсов (*.resx) в папке App_GlobalResources для интернационализации. Все это работает как очарование моей локальной установки IIS из VS.
Но когда я публикую свой веб-проект в локальной файловой системе и/или на другом сервере, все ресурсы больше не могут быть найдены. Поэтому я думаю, что предварительная компиляция каким-то образом искажает материал. Когда я вызываю предварительно скомпилированный веб-сайт, я получаю сообщение об ошибке, что объект ресурса с ключом xyz не может быть найден, хотя он может быть найден раньше.
Я проверил с помощью отражателя .NET, если материал ресурса сделал его в *. DLL. Все эти идентификаторы есть (bin/Web.dll, bin/<culture> /Web.resources.dll). Идентификаторы загружаются следующим образом:
<asp:MenuItem NavigateUrl="~/OrderNew.aspx" Text="<%$ Resources:MyProject, MenuNewOrder %>" Value="NewOrder">
Файлы ресурсов называются MyProject.resx и MyProject. <culture> .resx, где < культура > соответствует конкретной культуре (то есть MyProject.de-DE.resx).
Есть идеи, как это решить?
Я очень ценю любую помощь.
Спасибо
Edit:
Если я скопирую папку App_GlobalResources вручную на выход, ресурсы могут быть загружены нормально. Поэтому я действительно задаюсь вопросом, что такое предварительная компиляция.
Меня все еще интересует вопрос "правильный путь".
У меня была такая же проблема, и мне пришлось внести два изменения в свойства файла resx.
(Я не могу прокомментировать предыдущий ответ... пока нет репутации...?)
Это не решило мою проблему, я боюсь.
При попытке решения "Контент/копировать всегда" я получаю исключение, говоря, что ссылка во время компиляции не работала.
Почему asp.net нужен файл resx при компиляции ресурсов??
У меня была эта ошибка при копировании файла ресурсов из другого проекта.
Я решил это, удалив глобальный ресурс, добавив новый ресурс и скопировав элементы data
из старого в новый XML.
Это приведет к следующим настройкам ресурса:
<ItemGroup>
<Content Include="App_GlobalResources\Global.resx">
<Generator>GlobalResourceProxyGenerator</Generator>
<LastGenOutput>Global.Designer.cs</LastGenOutput>
</Content>
</ItemGroup>
У меня была такая же проблема. Всякий раз, когда я публиковал свое приложение на Small Business Server (SBS2008), он застрял в контрольной строке, но на самом деле это мета-ресурс. Без вышеупомянутого решения помогите мне.
Я потратил 6 часов на то, чтобы понять это, наконец, я понял, что это произошло, когда я сделал несколько файлов на сервере. Вначале все мои приложения были расположены на E: в своих папках, но затем я создал папки с именами, указывающими приложения ApplicationPools, и я перемещаю туда соответствующие приложения.
Я не знаю, как IIS7 на моем SBS ищет файлы ресурсов, но определенно это было проблемой. Когда я вернусь с приложениями к E: снова все стало работать как шарм.