Глобальные ресурсы не могут быть разрешены после публикации веб-сайта в VS2008 - PullRequest
13 голосов
/ 12 мая 2009

У меня есть веб-проект, работающий в 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).

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

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

Спасибо

Edit:

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

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

Ответы [ 4 ]

12 голосов
/ 02 июня 2009

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

  1. Установите для «Действия по сборке» значение
  2. Установите для параметра «Копировать в каталог вывода» значение «Копировать всегда»
2 голосов
/ 27 мая 2010

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

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

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

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

1 голос
/ 12 января 2012

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

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

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

  <ItemGroup>
    <Content Include="App_GlobalResources\Global.resx">
      <Generator>GlobalResourceProxyGenerator</Generator>
      <LastGenOutput>Global.Designer.cs</LastGenOutput>
    </Content>
  </ItemGroup>
0 голосов
/ 06 февраля 2013

У меня была такая же проблема. Всякий раз, когда я публиковал свое приложение на сервере Small Business Server (SBS2008), оно зависало в строке имени элемента управления, а на самом деле в части meta: resourcekey. Ни одно из вышеупомянутых решений не помогло мне.

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

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

...