Почему сборка выпуска C # содержит отладочную информацию - PullRequest
0 голосов
/ 25 октября 2018

Разбирая мою программу на C # (выпуск сборки), я заметил, что в ней содержатся имена функций и переменных, которые я использовал в проекте (я считаю, что это отладочная информация, исправьте меня, если я ошибаюсь).

Может кто-нибудь объяснить, почему он там есть и нужен ли он для программы.

1 Ответ

0 голосов
/ 25 октября 2018

Существует три уровня того, что вы называете «отладочной информацией» в управляемом коде.

  1. Включенные метаданные : сюда входят все открытые пространства имен, имена и типы (это не включает в себя такие вещи, как имена локальных переменных).Он включается в сборку и позволяет потребителям этого кода знать, как обращаться к коду и ссылаться на него.На земле C / C ++ этот уровень метаданных разбирается в H файлах .В COM land вы получаете библиотек типов .Все сборки получают это - они не могут быть использованы без него.

  2. Файлы символов (он же PDB файлы ).Это расширенная информация о внутренних именах, номерах строк и т. Д. Отладчики используют эту информацию для улучшения работы отладки.Вы можете создавать файлы PDB как для «отладочной сборки», так и для «сборки выпуска» (или другой сборки).Это контролируется настройками диалогового окна Advanced Build Settings , доступного на вкладке Build свойств проекта.По умолчанию для сборок выпуска установлено значение Только для PDB , в то время как для сборок отладки устанавливается значение Полная (что, как я полагаю, может поставить дополнительную информацию непосредственно в сборку).Файлы PDB не так важны в управляемом коде, как в C / C ++.Там отладка практически невозможна без соответствующего файла PDB.

  3. Определение константы DEBUG : (устанавливается на Build вкладка свойств проекта).Эта #defined константа используется как переключатель для включения (или не включения) кода только для отладки.Код может работать немного по-другому с этой константой или без нее.

...