mscorlib.файлов и системы.файл DLL



Почему MS изначально приняла решение поддерживать эти две отдельные основные библиотеки? Возможно, у них была какая-то проблема масштабируемости, но в настоящее время я никогда не вижу приложения любого типа, которое не нуждается в обоих. У кого-нибудь есть информация по этому поводу? Это не очень важно, но я уже много лет об этом думаю.



PS. Я знаю, что в двух либах, я знаю разницу - я большой поклонник отражатель :) просто интересно, что практическое использование разделительной из двух.

515   6  

6 ответов:

Mscorlib содержит как собственный, так и управляемый код.

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

Он отличается тем, что является единственной сборкой, которую среда CLR требует загружать внутри каждого управляемого процесса.

первоначально в mscorlib было помещено много "необязательных" вещей (вещей, которые технически не требуются для запуска приложения), потому что это были вещи, которые, скорее всего, будут использоваться всеми. Это включает в себя такие вещи, как HashTable и List.

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

материал в системе.dll была в основном всем, что не было "достойным" быть включенным mscorlib.

однако эта тенденция начинает меняться на противоположную. Среда CLR прилагает усилия для уменьшения размера mscorlib. Например, для Silverlight было удалено много вещей (чтобы уменьшить размер загрузки).

Я думаю, что они могут делать больше таких вещей для V4 (и более поздних версий), но я не уверен в деталях.

Я работаю в команде CLR / BCL и только что ответил на вашу электронную почту. Вот он наклеен ниже:

ответ Джареда на переполнение стека прямо вперед. mscorlib.dll-это плотно привязан к CLR по причинам, которые он упоминает. Обратите внимание, что mscorlib.файл DLL сам по себе не содержит никакого собственного кода (как предлагает Скотт), но есть много мест, куда нужно позвонить прямо в CLR. Как таковой, CLR и mscorlib должны быть версионными вместе.

расширение ответа Скотта.

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

внимательно посмотрите на узел ссылок любого проекта. Вы никогда не найдете mscorlib.DLL, перечисленных там. Он особенный, он нужен любому компилятору, потому что он содержит типы, которые необходимы для работы синтаксиса языка. Система.Массив, Система.Int32 И Системы.Строка, Система.Исключения и т. д.

вы можете написать программу, которая не имеет зависимость от системы.dll (хотя это было бы трудно), но вы не можете написать тот, который не зависит от mscorlib.dll

упомянутая родная / управляемая вещь звучит правдоподобно, но я все еще не полностью убежден. В любом случае, MS, похоже, просматривает mscorlib.dll как основная библиотека, необходимая для система, в то время как система.dll содержит основные функциональные возможности для программисты - что тоже звучит неплохо.

Я только что отправил этот же вопрос по электронной почте в команду BCL. Если кто-нибудь могу ответить... Когда (если?) Я получаю ответ, я опубликую его здесь. Спасибо за ответы далеко!

Это только предположение, но mscorlib.dll, вероятно, также имеет некоторый код C, который важен для среды CLR, а также является сборкой .NET или некоторым кодом смешанного режима. Система.dll, вероятно, все управляется.

Comments

    Ничего не найдено.