Как упоминалось ранее, инфраструктура .NET Core способна функционировать в средах разнообразных операционных систем. Таким образом, вполне вероятно создавать приложение C# на машине Windows с применением Visual Studio и запускать его под управлением iOS с использованием исполняющей среды .NET Core. Кроме того, приложение C# можно построить на машине Linux с помощью Visual Studio Code и запускать его на машине Windows. С помощью Visual Studio для Mac на компьютере Мае можно разрабатывать приложения .NET Core, предназначенные для выполнения под управлением Windows, macOS или Linux.
Программа C# по-прежнему может иметь доступ к неуправляемому коду, но тогда она привяжет вас к специфической цели разработки и развертывания.
Использование дополнительных языков программирования, ориентированных на .NET Core
Имейте в виду, что C# — не единственный язык, который может применяться для построения приложений .NET Core. В целом приложения .NET Core могут строиться с помощью С#, Visual Basic и F#, которые представляют собой три языка, напрямую поддерживаемые Microsoft.
Обзор сборок .NET
Независимо от того, какой язык .NET Core выбран для программирования, важно понимать, что хотя двоичные модули .NET Core имеют такое же файловое расширение, как и неуправляемые двоичные компоненты Windows (*.dll
), внутренне они устроены совершенно по-другому. В частности, двоичные модули .NET Core содержат не специфические, а независимые от платформы инструкции на
На заметку! Язык IL также известен как промежуточный язык Microsoft (Microsoft Intermediate Language — MSIL) или общий промежуточный язык (Common Intermediate Language — CIL). Таким образом, при чтении литературы по .NET/.NET Core не забывайте о том, что IL, MSIL и CIL описывают в точности одну и ту же концепцию. В настоящей книге при ссылке на этот низкоуровневый набор инструкций будет применяться аббревиатура CIL.
Когда файл *.dll
был создан с использованием компилятора .NET Core, результирующий большой двоичный объект называется
Во-первых, в отличие от сборок .NET Framework, которые могут быть файлами *.dll
или *.ехе
, проекты .NET Core .dll
, даже если проект является исполняемым модулем. Исполняемые сборки .NET Core выполняются с помощью команды dotnet<имя_сборки>.dll
. Нововведение .NET Core 3.0 (и последующих версий) заключается в том, что команда dotnet.ехе
копирует файл в каталог сборки и переименовывает его на <
. Запуск этой команды автоматически выполняет эквивалент dotnet<
. Файл *.ехе
с именем вашего проекта фактически не относится к коду проекта; он является удобным сокращением для запуска вашего приложения.
Нововведением .NET 5 стало то, что ваше приложение может быть сведено до единственного файла, который запускается напрямую. Хотя такой единственный файл выглядит и действует подобно собственному исполняемому модулю в стиле C++, его преимущество заключается в пакетировании. Он содержит все файлы, необходимые для выполнения вашего приложения и потенциально даже саму исполняющую среду .NET 5! Но помните о том, что ваш код по-прежнему выполняется в управляемом контейнере, как если бы он был опубликован в виде множества файлов.
Во-вторых, сборка содержит код CIL, который концептуально похож на байт-код Java тем, что не компилируется в специфичные для платформы инструкции до тех пор, пока это не станет абсолютно необходимым. Обычно "абсолютная необходимость" наступает тогда, когда на блок инструкций CIL (такой как реализация метода) производится ссылка с целью его применения исполняющей средой .NEIT Core.
В-третьих, сборки также содержат SportsCar
, то метаданные типа представляют такие детали, как базовый класс SportsCar
, указывают реализуемые SportsCar
интерфейсы (если есть) и дают полные описания всех членов, поддерживаемых типом SportsCar
. Метаданные .NET Core всегда присутствуют внутри сборки и автоматически генерируются компилятором языка.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT