Почему DLL-библиотеки .NET не могут быть включены в приложение, используя «копировать локально» - так что установленный .NET не нужен - PullRequest
2 голосов
/ 22 октября 2009

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

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

Ответы [ 3 ]

5 голосов
/ 22 октября 2009

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

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

3 голосов
/ 22 октября 2009

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

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

1 голос
/ 22 октября 2009

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

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

...