.NET Core не зависит от какой-либо установки?

Я читал о .NET Core, и кажется, что это классно.

Есть только одна вещь, которая заставляет меня думать, и я ее нигде не читал: когда я установил мое веб-приложение asp.net 5 для установки на .NET Core и его развертывания, это приложение не зависит от AT ALL платформа .NET установлена ​​на машине, которая будет размещать ее?

Я имею в виду, что развернутые сборки уже содержат CLR, BCL и зависимости проекта? Таким образом, я могу иметь несколько веб-приложений, размещенных на одной машине с разными версиями .NET Core, правильно?

Ответ 1

Я имею в виду, что развернутые сборки уже содержат CLR, BCL и зависимости проекта?

Они поставляются с любыми зависимостями в вашем файле project.json. Если вы решите развернуть CoreCLR, время выполнения будет отправлено вместе с вашим приложением, чтобы различные приложения могли работать на той версии ракеты, которую они потребляют, бок о бок. Дело в том, что все BCL медленно упаковываются в отдельные пакеты NuGet, которые поставляются вместе с вашим приложением, шаг за шагом устраняя необходимость развертывания всего BCL.

Ответ 2

Некоторые из других ответов охватывают аспект зависимости BCL, но важно различать, что есть среда выполнения и BCL (библиотека базового класса). В мире устаревших (не dnx) линий часто размывались, поскольку и среда выполнения, и bcl были установлены вместе на системном уровне.

зависимость времени выполнения (dnx)

dnx обеспечивает отправную точку для приложения. Он включает в себя исполняемый файл, компилятор Just In Time, компилятор байт-кода (Roslyn), неуправляемые библиотеки низкого уровня и небольшое количество управляемого кода. Важно помнить, что dnx идентифицируется средой (windows, linux, mac, freebsd и т.д.), Архитектурой (x86, x64, arm и т.д.) И временем выполнения (в настоящее время coreclr или clr). Он также версируется, и это версирование отдельно от версии bcl. Более новые версии dnx могут понадобиться для устранения ошибок, повышения производительности и добавления функций.

Таким образом, хост-машине будет нужен соответствующий dnx (определенный архитектурой, средой, временем выполнения и потенциальной версией в случае нарушения изменений). Существует несколько способов получить dnx на хосте. Один из вариантов - включить его в приложение (используя dnu publish -runtime). Другой вариант - использовать dnvm для его установки "глобально". В любом случае требуется время выполнения.

В качестве побочного примечания dnx для полной продолжительности (неосновной) является только фасадом. Это метод создания приложений dnx одинаково, независимо от того, нацелены ли они на полную структуру или базовую структуру. Вы можете заметить, что папка dnx для полной структуры (т.е. Dnx-clr-win-x64.1.0.0-beta4) составляет всего около 10 МБ. Если полная структура не установлена, приложение будет работать во время выполнения. По сути, dnx для полной структуры - это только заглушка, которая нуждается в полной структуре, фактически установленной в GAC, как часть системной установки для работы.

Ответ 4

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

Да, вы можете иметь несколько версий CoreCLR бок о бок.