Есть ли какие-либо сходства между COM DLL и .NET DLL, кроме расширения?

Я начал изучать программирование только недавно, за последние пару лет, и все это было на C # .NET. Я знаю, что файлы DLL существовали до .NET, поэтому я хотел бы знать, есть ли какое-либо сходство между файлами .NET DLL, которые я создаю сейчас, и файлами COM DLL, которые существовали раньше? Другими словами, если бы мне пришлось взять .NET DLL, которую я создал сегодня еще до появления .NET, и передать ее COM-разработчику, смогли бы они извлечь какую-либо информацию из файла? Или это будет просто бредовый файл со знакомым им расширением?


Обновить

Спасибо за ответы. А что насчет EXE-файлов? Есть ли сходства между .NET EXE и COM EXE? Сможет ли компьютер без установленного .NET найти точку входа для .NET exe или просто подумает, что файл поврежден или недействителен?


person Eric Anastas    schedule 31.01.2011    source источник


Ответы (2)


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

Однако, если .NET dll не является COM-видимым, то нет, COM-разработчик не сможет получить от них какую-либо полезную информацию.

РЕДАКТИРОВАТЬ:

Согласно вашему обновлению, компьютер без установленного .Net (или даже без установленной версии .Net framework) сможет найти точку входа для приложения, но он быстро завершится с ошибкой с исключением (то есть до того, как он действительно ничего не делает).

person Mark Avenius    schedule 31.01.2011

Никакой переписки нет. Сборка .NET - это файл данных, он содержит 5 байтов машинного кода. Остальное - это метаданные и IL. Достаточно тарабарщины без инструментов для ее декомпиляции, таких как ildasm.exe или Reflector.

person Hans Passant    schedule 31.01.2011
comment
Собственно сборка .NET следует за форматом файла PE. Так что это не просто файл данных. - person Eugene Mayevski 'Callback; 01.02.2011
comment
Вздох. Это формат файла PE32, который содержит всего 5 байтов кода, остальное - данные. - person Hans Passant; 01.02.2011
comment
он содержит намного больше формата PE - экспорт, разделы и т. д. Более того, иногда он действительно содержит намного больше, чем 5 байтов неуправляемого кода. - person Eugene Mayevski 'Callback; 01.02.2011
comment
@ Евгений - ты что делаешь? Существует ли когда-либо формат файла данных, который не содержит данных, относящихся к файловой структуре? Даже текстовый файл делает. И нет, сборка не содержит более этих 5 байтов, если это не сборка в смешанном режиме. - person Hans Passant; 01.02.2011