Файлы ресурсов (RESX) испорчены - PullRequest
7 голосов
/ 27 июля 2010

У меня был файл ресурсов с именем Localize.resx, который содержит английские строки.Я скопировал и вставил его в ту же папку (App_GlobalResources), VS создал копию, я переименовал копию в Localize.sl.resx, а оригинал в Localize.en.resx.Теперь все в файлах codebehind (Localize.en.designer.cs) исчезло.При удалении файла конструктора и выборе «Запустить пользовательский инструмент» создается новый, но полностью пустой файл конструктора.

У меня все еще есть строки в обоих resx, но файлы конструктора пропали (пусто), поэтому приложение не собирается.

Есть предложения?

Это внутри Vs2010 с решением ASP.NET MVC.

Ответы [ 5 ]

9 голосов
/ 05 июня 2012

У меня была та же проблема - файл Designer.cs отсутствует для некоторых файлов resx.

Исправление было в том, чтобы установить свойства для файлов resx:

Build Action - Embedded Resource
Custom Tool  - PublicResXFileCodeGenerator
8 голосов
/ 27 июля 2010

Это то, что Документация ASP.NET говорит о файлах ресурсов.

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

" Когда вы создаете файлы ресурсов, вы начинаете с создания базового файла .resx. Для каждого языка, который вы хотите поддерживать, создайте новый файл с тем же именем файла. Но в названии включите язык или язык и культура (название культуры). Список имен культур см. в классе CultureInfo. Например, вы можете создать следующие файлы:

• WebResources.resx

Файл базового ресурса. Это файл ресурсов по умолчанию (резервный).

• WebResources.es.resx

Файл ресурсов для испанского языка.

• WebResources.es-mx.resx

Файл ресурсов для испанского (Мексика), в частности.

• WebResources.de.resx

Файл ресурсов для немецкого языка. "

На самом деле я никогда раньше этого не замечал, но когда я пошел, чтобы проверить свои старые проекты, я увидел, что у них у всех есть базовый файл, а затем - язык. Поэтому я просто исправил его, чтобы следовать этому соглашению, и теперь оно работает.

2 голосов
/ 27 июля 2010

На вашем месте я бы:

создать новый файл resx; открыть старый; Нажмите Ctrl + A в старом; Нажмите Ctrl + V в новом; Сохранить новый; Удалить старую; Переименуйте новый:)

Это должно быстро решить проблему. Вы также можете проверить, не исключены ли файлы cs из файла, нажав кнопку показать все

0 голосов
/ 20 мая 2019

Я нашел лучший способ:

  • Создайте файл по умолчанию: Resource1.resx
  • Пусть создаст: Resource1.Desinger.cs
  • Переименуйте его на нужный вам язык, например, Localize.en.resx

Любой другой способ для меня просто прекратил создавать X.Designer.cs файлы

0 голосов
/ 17 сентября 2015

Извините за использование этого, чтобы написать комментарий. Моя репутация на самом деле меньше 50 = (но я думаю, что это тоже может быть важно.

Это относится к ответу Алвиса: Ваше решение помогло. Но мне также пришлось изменить модификатор доступа к свойствам в базовом файле кода дизайнера с внутреннего на публичный. В противном случае я получил XmlParseExceptions при попытке доступа к resx в xaml.

Edit: Так что это относится к C # / WPF. Может отличаться в ASP.NET

...