C # - мне нужны файлы манифеста? - PullRequest
20 голосов
/ 29 ноября 2009

Мне интересно, нужны ли мне два файла манифеста, которые создаются при публикации моего приложения. Это работает, когда я их удаляю. В случае, если они необходимы, я попытался встроить их (Project> Application> Embed manifest с настройками по умолчанию), но они все еще являются внешними.

Это: (appname).exe.manifest и (appname).application.

Ответы [ 3 ]

14 голосов
/ 29 ноября 2009

Файл манифеста описывает, как должно работать ваше приложение. От MSDN :

Каждая сборка, статическая или динамическая, содержит набор данных, который описывает, как элементы в сборке связаны друг с другом. Манифест сборки содержит эти метаданные сборки. Манифест сборки содержит все метаданные, необходимые для указания требований к версии сборки и идентификатора безопасности, а также все метаданные, необходимые для определения области сборки и разрешения ссылок на ресурсы и классы. Манифест сборки может храниться либо в PE-файле (.exe или .dll) с кодом промежуточного языка Microsoft (MSIL), либо в отдельном PE-файле, который содержит только информацию о манифесте сборки.

Поэтому удаление их, вероятно, является неправильным, особенно если вы хотите, чтобы ваше приложение по умолчанию работало с повышенными правами в Vista и более поздних версиях.

Здесь - подробные сведения из MSDN об использовании инструмента mt, который используется для встраивания манифеста в ваше приложение.

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

5 голосов
/ 29 ноября 2009

Кроме того, когда использовался VS2003, и вы хотите, чтобы ваши элементы управления были больше похожи на интерфейс XP, манифест будет содержать общие элементы управления с соответствующей версией 6.x, которая используется вместе с вашим приложением, а затем GUI получает «обновленный внешний вид XP» вместо старых неуклюжих элементов управления Windows 2000. По этой причине вы можете встроить манифест в качестве ресурса, чтобы вам не приходилось перемещаться по файлу манифеста (хорошо, это довольно маленький файл), но, тем не менее, это делает распределение приложения более аккуратным.

А также, во время выполнения .NET 1.1 (теперь исправлена ​​в 2.0+) была ошибка, из-за которой при использовании манифеста в вашем приложении не удается обновить графический интерфейс, чтобы придать ему больше внешнего вида XP. Обходной путь в то время состоял в том, чтобы вызвать Application.DoEvents перед выполнением Application.Run (новая форма ());

Теперь в Vista и Win 7 манифест используется для указания повышенных разрешений для обхода UAC, что сводит к минимуму вероятность того, что Vista / Win 7 выскочит диалоговое окно UAC.

1 голос
/ 29 ноября 2009

Нужно для цели

с указанием требований к версии сборки и идентификатора безопасности, и все метаданные, необходимые для определения объем сборки и разрешения ссылки на ресурсы и классы

...