Почему мой .net exe такой огромный инструмент-анализатор?

Есть ли инструмент, который может объяснить размер сборки .NET (исполняемого файла или файла DLL)?

Раньше было расширение IDE, которое детализировало пространство, используемое проектом.

Он должен показать большие файлы кода:

Введите описание изображения здесь

И данные ресурсы:

Введите описание изображения здесь

Есть ли такое в мире .NET?

Я действительно думал, что при переходе на .NET и отсутствии необходимости встраивать весь VCL в исполняемый файл размеры исполняемых файлов уменьшатся.

Бонусное чтение


person Ian Boyd    schedule 16.02.2012    source источник
comment
Это слишком широкий вопрос ...   -  person Security Hound    schedule 16.02.2012
comment
Этот вопрос сбивает с толку. Вы работаете в .NET? Включенные вами диалоговые окна предназначены для приложений Delphi Win32. Вы используете Delphi для .NET? Если да, вы должны включить это в свои теги (и предоставить информацию о том, какие параметры компилятора вы используете).   -  person Ken White    schedule 16.02.2012
comment
@KenWhite, я я действительно работаю в .NET. Диалоги, которые я включил, предназначены для приложений Delphi Win32 (т.е. былые времена). Этот вопрос касается сборок .NET и .NET. я случайно работал в Visual Studio 2010. Хотя я полагаю, что любой ценный инструмент может анализировать любую сборку .NET, независимо от компилятора, использованного для ее создания (включая DFDN)   -  person Ian Boyd    schedule 16.02.2012
comment
Как я уже сказал, ваш вопрос сбивал с толку. (Фактически, это все еще так.) Вы упоминаете расширение IDE, но это не было расширение VS IDE, вы упоминаете сборку всего VCL и показываете диалоги проекта Delphi и не упоминаете какой-либо IDE / язык в своих тегах .   -  person Ken White    schedule 16.02.2012
comment
@KenWhite Это был дань уважения тем, кто все еще знает язык, на который приходится 4% рынка.   -  person Ian Boyd    schedule 16.02.2012
comment
@KenWhite Какую часть вы не понимаете, возможно, я смогу уточнить.   -  person Ian Boyd    schedule 16.02.2012
comment
@Ian, если ваше замечание о доле рынка относится к Delphi, вам необходимо обновить свои факты (и, очевидно, ваши знания о продукте). :) База пользователей Delphi росла за последние пару лет, и недавно выпущенный XE2 поддерживает 64-битную и XPlatform (OS X и iOS). Поскольку вы получили ответ на свой вопрос, очевидно, он был достаточно ясным. Моя ошибка.   -  person Ken White    schedule 16.02.2012
comment
@KenWhit langpop.com вместе взятые Delphi и Pascal не совсем достигают 5%. Обидно тоже. Я использую Delphi ежедневно и предпочитаю его в значительной степени, чем Visual Studio.   -  person Ian Boyd    schedule 16.02.2012
comment
@Ian, langpop основан на поиске через различные поисковые сайты. Его достоинства весьма спорны, а его методология несовершенна. (Он не включает, например, вопросы, размещенные здесь напрямую, вопросы, заданные на других форумах и группах и т. Д., И не учитывает пользователей, которые достаточно опытны или знакомы с Delphi и WinAPI, которые не выполняют поиск часто (если вообще)). По данным EMBT, существует более миллиона лицензированных пользователей Delphi, и их число неуклонно растет с тех пор, как компания покинула Borland (с момента запуска CodeGear). Он также не включает Delphi Prism (Pascal / .NET).   -  person Ken White    schedule 16.02.2012


Ответы (1)


Стандартный SDK использовал ILDASM (IL Disassembler), имел опцию «Статистика» в меню View, которая разбивала его следующим образом:

 File size            : 3072
 PE header size       : 512 (456 used)    (16.67%)
 PE additional info   : 167               ( 5.44%)
 Num.of PE sections   : 2
 CLR header size     : 72                 ( 2.34%)
 CLR meta-data size  : 1572               (51.17%)
 CLR additional info : 0                  ( 0.00%)
 CLR method headers  : 15                 ( 0.49%)
 Managed code         : 77                ( 2.51%)
 Data                 : 512               (16.67%)
 Unaccounted          : 145               ( 4.72%)

 Num.of PE sections   : 2
   .text    - 2048
   .reloc   - 512

 CLR meta-data size  : 1572
   Module        -    1 (10 bytes)
   TypeDef       -    4 (56 bytes)      0 interfaces, 0 explicit layout
   TypeRef       -   15 (90 bytes)
   MethodDef     -    4 (56 bytes)      0 abstract, 0 native, 4 bodies
   FieldDef      -    2 (12 bytes)      0 constant
   MemberRef     -   15 (90 bytes)
   ParamDef      -    4 (24 bytes)
   CustomAttribute-   13 (78 bytes)
   StandAloneSig -    1 (2 bytes)
   Assembly      -    1 (22 bytes)
   AssemblyRef   -    1 (20 bytes)
   Strings       -   571 bytes
   Blobs         -   336 bytes
   UserStrings   -     8 bytes
   Guids         -    16 bytes
   Uncategorized -   181 bytes

 CLR method headers : 15
   Num.of method bodies  - 4
   Num.of fat headers    - 1
   Num.of tiny headers   - 3

 Managed code : 77
   Ave method size - 19

Это должно стать хорошей отправной точкой.

person cynic    schedule 16.02.2012
comment
Отличная отправная точка. Сегодня я узнал, что Visual Studio хранит мои сжатые изображения PNG как несжатые BMP. 1 МБ изображений PNG занимает 7,5 МБ при окончательной сборке 8 МБ. вздох - person Ian Boyd; 16.02.2012
comment
@IanBoyd Вы можете добавить это изображение в качестве содержимого, а не в качестве ресурса в меню свойств изображения. - person balexandre; 21.02.2012
comment
@balexandre Параметр сборки содержимого означает, что файл будет в выходном каталоге - они не будут встроены в выходную сборку. Похоже, OP должен использовать Manifest Resource Streams для хранения данных PNG. - person Dai; 19.04.2021