Типично CLR имеет дело с двумя видами двоичном:Различия между программой и библиотекой
Программа имеет имя файла с расширением .exe, помечаются как программа в заголовке PE и имеет точку входа.
У библиотеки есть имя файла, заканчивающееся на .dll, помечается как библиотека в заголовке PE, не имеет точки входа и содержит метаданные, описывающие вызываемые функции, которые она содержит.
Какие части этого различия фактически применяются?
Например, я думаю, что расширение в имени файла фактически не имеет значения ни для чего, кроме пути поиска команд; как только файл читается, имя файла игнорируется и подсчитывается только заголовок PE. Это верно?
Можете ли вы взять программу и рассматривать ее как библиотеку, ссылаясь на нее из другой программы и вызывая некоторые ее функции, не используя ее точку входа?
Может ли библиотека иметь точку входа? Если да, может ли он запускаться как программа?