Используя один и тот же значок для .exe и Form - PullRequest
0 голосов
/ 01 сентября 2011

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

(Этот вопрос уже задавался ранее, здесь , но ответы, похоже, не решили проблему. Похоже, что ответ от vanmelle извлекает только одну иконку (например, 16x16), ответ Sunlight извлекает только 32x32, а ответ lc не решает проблему: в исполняемом файле все еще есть дублированный значок.)

Если выполнить эту задачу невозможно, почемуэтот?Что значит использовать один и тот же значок для исполняемого файла и формы, что так сложно в WinForms?

1 Ответ

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

Это неизбежное следствие запуска управляемого кода в полностью неуправляемой операционной системе. Проводник Windows знает, как читать неуправляемые ресурсы. Вы можете посмотреть, как они выглядят, использовать File + Open + File в Visual Studio и выбрать свой .exe. Обычно вы видите три группы ресурсов, перечисленные там:

  • RT_MANIFEST, содержит манифест, который сообщает Windows, что ваша программа поддерживает Vista
  • Версия, содержит ресурс версии файла со значениями, полученными из файла AssemblyInfo.cs. Вы видите его содержимое при использовании вкладки Свойства + Подробности в Проводнике. Обратите внимание, что супер важная [AssemblyVersion] не видна в Vista и выше
  • Значок, содержит добавленный вами значок.

Эти данные неуправляемых ресурсов отделены от добавленных вами управляемых ресурсов. Управляемые ресурсы компилируются в манифест сборки. Неуправляемые ресурсы хранятся в разделе .rsrc файла изображения. Вы можете переопределить автоматически сгенерированную версию с параметром командной строки / win32res. Для этого требуется файл .res, двоичный файл, который создается из сценария ресурсов .rc компилятором ресурсов rc.exe. Средневековый инструмент Windows SDK.

Это может измениться однажды, по слухам, сверхсекретный проект Midori сфокусирован на управляемой операционной системе. Пока что нам придется обходиться с клеем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...