Глобальные ресурсы не могут быть решены после публикации Веб-сайта в VS2008

У меня есть веб-проект, запущенный в 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 вручную на выход, ресурсы могут быть загружены нормально. Поэтому я действительно задаюсь вопросом, что такое предварительная компиляция.

Меня все еще интересует вопрос "правильный путь".

Ответы

Ответ 1

У меня была такая же проблема, и мне пришлось внести два изменения в свойства файла resx.

  • Задайте "Построение действия" для содержимого
  • Установите "Копировать в каталог вывода" для копирования всегда

Ответ 2

(Я не могу прокомментировать предыдущий ответ... пока нет репутации...?)

Это не решило мою проблему, я боюсь.

При попытке решения "Контент/копировать всегда" я получаю исключение, говоря, что ссылка во время компиляции не работала.

Почему asp.net нужен файл resx при компиляции ресурсов??

Ответ 3

У меня была эта ошибка при копировании файла ресурсов из другого проекта.

Я решил это, удалив глобальный ресурс, добавив новый ресурс и скопировав элементы data из старого в новый XML.

Это приведет к следующим настройкам ресурса:

  <ItemGroup>
    <Content Include="App_GlobalResources\Global.resx">
      <Generator>GlobalResourceProxyGenerator</Generator>
      <LastGenOutput>Global.Designer.cs</LastGenOutput>
    </Content>
  </ItemGroup>

Ответ 4

У меня была такая же проблема. Всякий раз, когда я публиковал свое приложение на Small Business Server (SBS2008), он застрял в контрольной строке, но на самом деле это мета-ресурс. Без вышеупомянутого решения помогите мне.

Я потратил 6 часов на то, чтобы понять это, наконец, я понял, что это произошло, когда я сделал несколько файлов на сервере. Вначале все мои приложения были расположены на E: в своих папках, но затем я создал папки с именами, указывающими приложения ApplicationPools, и я перемещаю туда соответствующие приложения.

Я не знаю, как IIS7 на моем SBS ищет файлы ресурсов, но определенно это было проблемой. Когда я вернусь с приложениями к E: снова все стало работать как шарм.