Почему библиотеки .NET не могут быть включены в приложение, используя & # 8220; копировать локальные & # 8221; - так что установленный .NET не нужен

StackOverflow https://stackoverflow.com/questions/1607039

Вопрос

Довольно простой вопрос, и я действительно хочу знать причину (настоящую причину) этого. Скажем, вы хотите распространить приложение .NET на компьютеры без установленного .NET (даже не 1.1). Почему мы не можем просто включить mscorelib.dll & amp; другие без приложения? Это потому, что CLR должен быть каким-то образом установлен, чтобы получить возможности JIT для интерпретации IL?

Я знаю, что в настоящее время это совершенно бессмысленный вопрос, поскольку в каждой системе есть минимум .NET 2.0, но мне все еще интересно: =)

Это было полезно?

Решение

Установка библиотек и CLR также позволяет использовать общие сборки. Вы действительно хотите, чтобы сотни копий CLR свободно работали на вашем компьютере? Мне нравится тот факт, что я знаю, что определенные вещи будут доступны для моего приложения. Намного лучше, чем беспокоиться о & # 8230; Скомпилировал ли я версию среды выполнения 1.4.5 или 1.4.6 ... может быть, даже 1.2.5 (JRE может быть проблемой)

Также есть много частей .Net Framework, которые являются просто управляемыми оболочками поверх неуправляемых API. А также множество других сборок, которые вы используете, но на которые нет прямой ссылки. (см. mscoree.tlb и многие другие)

Другие советы

Ну, как вы уже сказали, одни сборки бесполезны.

Вам нужна среда выполнения, включая джиттер, загрузчик типов, сборщик мусора и т. д.

.NET - интерпретируемый язык Just In Time. Ваши сборки не компилируются в двоичный исполняемый файл.

Поэтому вам нужно установить среду выполнения .NET, чтобы ваш код мог интерпретироваться во время выполнения. Без этого ... ваше приложение ничего не будет делать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top