Ошибка файла C# resx

Я получаю странную ошибку с моими файлами.resx:

"Недопустимый файл Resx. Ввод ResX недопустим. Не удается найти допустимые теги"resheader"для имен типов чтения и записи ResX. C:\Documents and Settings\Users\ Мои документы \Visual Studio 2010\Projects\dock\WinForms\Dock\strings.resx"

Что я сделал, так это заменил некоторые файлы в существующем решении VS 2010 на более старые из решения VS 2008, большинство файлов работают нормально, но я получаю эту ошибку и не знаю, как ее исправить. Если это имеет значение, вот исходный код этого файла.

Я использую NET WinForms 4.0, если это имеет значение.

3 ответа

Решение
  <resheader name="resmimetype">
    <value>
      text/microsoft-resx
    </value>
  </resheader>

Дополнительные пробелы были добавлены как-то. Вам нужно будет удалить его, чтобы он выглядел так:

  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>

Также необходимо обновить номера версий в ссылках на сборку с 2.0.0.0 до 4.0.0.0. Подобное копирование файлов.resx в противном случае является хорошим способом попасть в неприятности. Вы легко получите White Screen of Darn, когда сгенерированный дизайнером код попытается использовать отсутствующее значение в файле.resx.

Итак, для решения вашей проблемы я добавил следующие строки в ваш файл непосредственно перед /root:

  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>1.3</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>

Я создал новое решение VS2010, добавил новый файл.resx обычным способом и посмотрел на структуру сгенерированного файла. Я нашел эти строки, которые, по-видимому, нужны VS для того, чтобы правильно скомпилировать ваш файл.

Надеюсь, я помог:)

РЕДАКТИРОВАТЬ:

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

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

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