Как разрешить ошибку «Неправильный файл Resx… Не удается найти допустимые теги» resheader «для имен типов чтения и записи ResX». Ошибка компилятора?
Я получаю дюжину "Неверный файл Resx. Ввод ResX недопустим. Не удается найти допустимые теги" reheader "для имен типов чтения и записи ResX". msgstr при попытке скомпилировать.
У меня была эта проблема раньше, как видноВот.
На этот раз, однако, это проявляется немного по-другому.
Во-первых, вот что я сделал: я выбрал пункт контекстного меню «Отменить ожидающие изменения» для нескольких файлов в проекте. Для каждого из них связанный с ними файл * .resx явно поврежден.
Если дважды щелкнуть первую ошибку в списке ошибок, я попаду сюда в файл .resx:
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
Дважды нажав на следующую ошибку, я попаду сюда в файл .resx:
<resheader name="resmimetype">text/microsoft-resx</resheader>
Это закомментированный пояснительный раздел; в немного контекста:
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
. . .
Все 10 других 2-х нажатий выводят меня прямо на первую строку в файле .resx, а именно:
<?xml version="1.0" encoding="utf-8"?>
Ответ Ганса Пассанта на тот же вопрос от другого котаВот указывает на необходимость удаления лишних пробелов; Я не вижу такого лишнего пробела в моих файлах .resx, хотя ...
Что мне нужно сделать, чтобы исправить эти искаженные файлы .resx?
ОБНОВИТЬМожет случиться так, что те первые два местоположения, где ошибочная msg, кажется, указывают, являются поддельными / вводящими в заблуждение; они могут быть просто местами в файлах, в которые я ранее поместил курсор (странно, что сообщение об ошибке отправляется туда, а не в предполагаемое место проблемы, хотя ...)
ОБНОВЛЕНИЕ 2Согласно сообщению об ошибке, в сбойных файлах * .resx отсутствуют допустимые теги читателя / записывающего устройства. Тем не менее, эти теги / декларации существуют в файлах * .resx. Это выглядит так:
<resheader name="reader">
<value>System.Windows.Forms.Design.CFResXResourceReader, System.CF.Design,
Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</resheader>
<resheader name="writer">
<value>System.Windows.Forms.Design.CFResXResourceWriter, System.CF.Design,
Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</resheader>
.... но, что интересно, (если вы вообще неуравновешенны)делать отличаются от объявлений читателей и писателей RESX в других (компилируемых) формах, которые выглядят так:
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0,
Culture=neutral,PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0,
Culture=neutral,PublicKeyToken=b77a5c561934e089</value>
</resheader>
Если я заменю декларации устройства чтения / записи RESX в некомпилируемых формах другим форматом (IOW, я заменяю »System.Windows.Forms.Design.CFResXResourceReader, System.CF.Design, Version = 7.0.5000.0" с "System.Resources.ResXResourceReader, System.Windows.Forms, версия = 2.0.0.0msgstr "(и используйте разные токены открытого ключа), он компилируется!
НО (и это большой, но [t] (подумайте Берта)), машина, на которой компилируется этот проект, является ПК (конечно), но целевой машиной, на которой будет работать .exe, является Compact Framework ( портативное устройство. Итак, будет ли замена «CF» более общим словарным выражением RESX проблематичной, как только .exe будет перемещен с компьютера на точку, чтобы указать на переносное устройство Windows CE?