Коллега пожаловался, что переданная ему сборка (обычный DLL-файл C ++, не скомпилированный в NET) не работает. Я ответил Что ... сборка ?.
Итак, прочитав этот учебник по точечной сети и аналогичный ТАК вопрос, насколько я понимаю, файлы DLL и EXE (а также исполняемые файлы / разделяемые библиотеки, созданные в Linux с использованием Mono, конечно), созданные NET, принципиально отличаются от «обычные» библиотеки машинного кода и исполняемые файлы, потому что они не содержат нативный байтовый код, а скорее какой-то странный код MSIL (Microsoft Intermediate Language), насколько я понимаю.
Так что я спрашиваю
- Почему эти файлы, содержащие .NET MSIL, называются сборками? Что они собирают или что собирают?
а также
- Почему Microsoft не разрешила этим сборкам иметь расширения файлов, отличные от собственных исполняемых файлов / общих библиотек? Они не работают без NET-интерпретатора (или он называется NET-VM?), Так почему бы не отличить их от обычного нативного кода?
Я имею в виду, что у Python есть файлы .py, у Java есть файлы .class / .jar и так далее ... В моем случае это могло бы предотвратить некоторую путаницу.