У меня довольно простая форма, которую я хочу локализовать (на самом деле у меня в этом проекте немало, все они имеют одинаковую проблему). Когда я устанавливаю свойство формы Localizable
в true, Visual Studio генерирует файл .resx
с именем формы (как и следовало ожидать). Проблема состоит в том, что он добавляет всевозможные вещи в файл .resx, который ничего не может открыть (например, WinRes, ResEx, Simple Resx Editor, RESX Editor и т.д.).
Ошибка, которую я получаю:
Файл ResX Тип System.Drawing.Point, System.Drawing, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a данные в строке 125, позиция 4 не может быть расположена. Строка 127, позиция 5. не может быть проанализирована.
Строка 124-127:
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lblUsername.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 24</value>
</data>
Теперь я предполагаю, что Visual Studio добавляет это, чтобы я мог перемещать кнопки и т.д. в зависимости от языка (мне не нужна или не нужна эта способность). Тем не менее, он выдает указанную выше ошибку в каждом редакторе другой, чем Visual Studio.
Единственными расширениями, которые я установил (в соответствии с диспетчером расширения), являются:
- Выделите все вхождения выбранного слова
- Microsoft Ribbon для WPF (который я не использую в этом проекте)
Менеджер надстроек не показывает надстройки.
Edit:
После копания и ручного редактирования файла .resx
проблема на самом деле связана с строкой 124 <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
в частности с Version=4.0.0.0
.
Если я устанавливаю это на Version=2.0.0.0
, тогда все работает, как в Visual Studio, так и во всех внешних программах. Проблема с этим заключается в том, что если я что-либо отредактирую в Visual Studio, он вернет reset к Version=4.0.0.0
.
В настоящее время я собираюсь установить Target Framework в .NET Framework 3.5 Client Profile, чтобы Visual Studio не переопределяла версию. Это обходное решение и означает, что я не могу использовать возможности .NET 4.0.
Я правильно понимаю, что там есть ошибка в .NET Framework или каждый редактор .resx(включая Microsoft).
Изменить 2: Оказалось, что когда я пытался использовать средство Microsoft WinRes.exe, я фактически запускал версию .NET Framework 3.5, так как версия .NET Framework 4.0 не устанавливается.
Мне пришлось установить SDK.NET Framework 4.0 из http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/winsdk_web.exe, и тогда я смог редактировать .resx файлы с помощью WinRes.exe 4.0