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

У меня есть веб-проект, запущенный в VS 2008. У нас есть несколько глобальных файлов ресурсов (*.resx) в папке App_GlobalResources для интернационализации. Все это работает как очарование на моей локальной установке IIS из VS.

Но когда я публикую свой веб-проект в локальной файловой системе и / или другом сервере, все ресурсы больше не могут быть найдены. Так что я думаю, что предварительная компиляция как-то портит вещи. Когда я вызываю предварительно скомпилированный веб, я получаю сообщение об ошибке, что объект ресурса с ключом xyz не может быть найден, хотя его можно было найти раньше.

С помощью рефлектора.NET я проверил, превратился ли ресурс в *.dll. Все эти идентификаторы есть (bin / Web.dll, bin //Web.resources.dll). Идентификаторы загружаются так:

<asp:MenuItem NavigateUrl="~/OrderNew.aspx" Text="<%$ Resources:MyProject, MenuNewOrder %>" Value="NewOrder">

Файлы ресурсов называются MyProject.resx и MyProject..resx, где соответствует конкретной культуре (то есть MyProject.de-DE.resx).

Есть идеи как решить это?

Я действительно ценю любую помощь.

Спасибо

Редактировать:

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

Я все еще заинтересован в решении вопроса "правильным путем".

4 ответа

Решение

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

  1. Установите "Build Action" в Content
  2. Установите "Копировать в выходной каталог", чтобы всегда копировать

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

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

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

Зачем 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), оно зависало в строке имени элемента управления, а на самом деле в части meta: resourcekey. Ни одно из вышеупомянутых решений не помогло мне.

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

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

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