Проблемы с файлами RESX на VS2010, ориентированными на фреймворк 3.5 - PullRequest
6 голосов
/ 03 августа 2010

Вот история, с которой я недавно столкнулся, и возможный ответ (?) Я просто хотел поделиться этой информацией, потому что я еще не мог найти ее в stackoverflow.

Я обновил свое решение с VS2008, WinXP, 32-разрядная до VS2010, Win7, 64-разрядная.

Когда я делаю изменения в WinForms, которые генерируют новые файлы RESX, или обновляю файлы RESX, у меня возникают проблемы.

Отладочная сборка сVS2010 не было проблем.Однако для режима Release я должен использовать процесс подписи с задержкой.Теперь этот процесс выдает ошибки в новых файлах RESX, созданных с помощью VS2010.(Снова обратите внимание, что старые файлы RESX НЕ показывают это поведение)

(цель CoreResGen) Search.resx (176,5): ошибка RG0000: Не удалось загрузить файл или сборку xxx.Controls, Version = 1.5 0,Культура = нейтральная, PublicKeyToken = 7acfcc7eabace048 'или одна из ее зависимостей.Проверка строгого имени не удалась.(Кроме HRESULT: 0x8013141A) Строка 176, позиция 5.

Вот часть информации, которую я нашел в Интернете

http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect-format.aspx

Мне было интересно,другие люди столкнулись с этим и какой обходной путь они следовали?Никакого обходного пути не будет означать ожидание выхода VS2010 SP1.

К сожалению, я использую сторонние сборки, которые могли быть скомпилированы как 32-битные.(Я не контролирую их процесс сборки)

- 8/11/2010 Некоторая дополнительная информация.

Сам элемент управления не подписан или не подписан с задержкой.Но элемент управления использует компонент из сборки с подписью с задержкой.Обе сборки находятся в одном и том же решении.

Когда я меняю потребляющую сборку на целевую платформу 4.0, проблема решается.Когда я нацеливаюсь на фреймворк 3.5, мы получаем ошибку.

1 Ответ

1 голос
/ 01 сентября 2011

Мы также столкнулись с проблемой ImageList внутри файла * .resx (открывается в коде, а не в конструкторе):

<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        [bunch of binary data here]
    </value>
</data>

Мы подтвердили это, только удалив тег <data />, связанный с ImageList (см. Выше), а затем удалив ссылки в конструкторе элемента управления:

//initialize
this.imageListSuperHeroes = new System.Windows.Forms.ImageList(this.components);

//control that references the ImageList
this.btnAwesome.ImageKey = "superman.gif";
this.btnAwesome.ImageList = this.imageListSuperHeroes;

Добавьте ссылки на изображения (используйте отдельные изображения!) Элемента управления из «файла ресурсов проекта», а не из «Локального ресурса», и обновите ссылки, удаленные из ваших форм.

this.btnAwesome.Image = global::PMPPlus.Properties.Resources.Superman;

Это исправило это для нас, и, надеюсь, это поможет вам двигаться в правильном направлении. Если нет, то покопайтесь вокруг * .resx, чтобы увидеть, какой плохой <data /> вас облажает.

Ссылка по теме: http://connect.microsoft.com/VisualStudio/feedback/details/566131/error-in-resx-file-when-adding-imagelist

Они предложили некоторые обходные пути, которые не соответствовали нашим потребностям:

  • Ориентация на другую платформу и фреймворк
  • Используйте corflags, чтобы прикрутить каталог C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bin!

Наша установка

  • Старая среда: 32-битная Windows XP
  • Новая среда: Windows 7, 64-разрядная
  • Общая настройка: VS2010 + Целевая платформа: 3.5 + Целевая платформа: x86
...