net desktop runtime что это
.NET 6 — это последняя версия.
Поддерживаемые выпуски
Даты окончания жизненного цикла версий Windows 10 зависят от выпуска. В следующей таблице рассматриваются только выпуски Домашняя, Профессиональная, Pro для образовательных учреждений и Pro для рабочих станций. Дополнительные сведения см. в справочных материалах по жизненному циклу поддержки Windows.
Символ + представляет минимальную версию.
Операционная система | .NET Core 3.1 | .NET 5 | .NET 6 |
---|---|---|---|
Windows 11 | ✔️ | ✔️ | ✔️ |
Windows Server 2022 | ✔️ | ✔️ | ✔️ |
Windows 10, версия 21H1 | ✔️ | ✔️ | ✔️ |
Windows 10 или Windows Server версии 20H2 | ✔️ | ✔️ | ✔️ |
Windows 10 или Windows Server версии 2004 | ✔️ | ✔️ | ✔️ |
Windows 10 или Windows Server версии 1909 | ✔️ | ✔️ | ✔️ |
Windows 10 или Windows Server версии 1903 | ✔️ | ✔️ | ✔️ |
Windows 10, версия 1809 | ✔️ | ✔️ | ✔️ |
Windows 10, версия 1803 | ✔️ | ✔️ | ✔️ |
Windows 10, версия 1709 | ✔️ | ✔️ | ✔️ |
Windows 10 (версия 1607) | ✔️ | ✔️ | ✔️ |
Windows 8.1 | ✔️ | ✔️ | ✔️ |
Windows 7 с пакетом обновления 1 (SP1), ESU | ✔️ | ✔️ | ✔️ |
Windows Server 2019 Windows Server 2016 Windows Server 2012 R2 Windows Server 2012 | ✔️ | ✔️ | ✔️ |
Windows Server Core 2012 R2 | ✔️ | ✔️ | ✔️ |
Windows Server Core 2012 | ✔️ | ✔️ | ✔️ |
Nano Server, версия 1809 и выше | ✔️ | ✔️ | ✔️ |
Nano Server, версия 1803 | ✔️ | ❌ | ❌ |
Неподдерживаемые выпуски
Сведения о среде выполнения
В Windows можно установить три различные версии среды выполнения:
Сведения о пакете SDK
Компьютеры Windows на базе ARM
Поддерживаемые функции
Различия в путях
Конфликты путей
Переменные пути
Зависимости
.NET 6 поддерживает следующие версии Windows:
Символ + представляет минимальную версию.
Операционная система | Version | Архитектуры |
---|---|---|
Windows 11 | 21H2 | x64, ARM64 |
Клиент Windows 10 | 1607+ | x64, x86, ARM64 |
Клиент Windows | 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 | x64, x86 |
Windows Server | 2012+ | x64, x86 |
Windows Server Core | 2012+ | x64, x86 |
Nano Server | 1809+ | X64 |
.NET 5 поддерживает следующие версии Windows:
Символ + представляет минимальную версию.
Операционная система | Version | Архитектуры |
---|---|---|
Windows 11 | 21H2 | x64, ARM64 |
Клиент Windows 10 | 1607+ | x64, x86, ARM64 |
Клиент Windows | 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 | x64, x86 |
Windows Server | 2012+ | x64, x86 |
Windows Server Core | 2012+ | x64, x86 |
Nano Server | 1809+ | X64 |
.NET Core 3.1 поддерживает следующие версии Windows:
Символ + представляет минимальную версию. Конкретные требования к версии ОС см. в разделе Поддерживаемые выпуски.
Операционная система | Version | Архитектуры |
---|---|---|
Windows 11 | 21H2 | x64, ARM64 |
Клиент Windows 10 | 1607+ | x64, x86 |
Клиент Windows | 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 | x64, x86 |
Windows Server | 2012+ | x64, x86 |
Nano Server | 1803+ | x64, ARM32 |
.NET Core 3.0 поддерживает следующие версии Windows:
Символ + представляет минимальную версию.
Операционная система | Version | Архитектуры |
---|---|---|
Клиент Windows | 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 | x64, x86 |
Клиент Windows 10 | Версия 1607+ | x64, x86 |
Windows Server | 2012 R2+ | x64, x86 |
Nano Server | Версия 1803+ | x64, ARM32 |
.NET Core 2.2 поддерживает следующие версии Windows:
Символ + представляет минимальную версию.
Операционная система | Version | Архитектуры |
---|---|---|
Клиент Windows | 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 | x64, x86 |
Клиент Windows 10 | Версия 1607+ | x64, x86 |
Windows Server | 2008 R2 с пакетом обновления 1 или более поздней версии (SP1+) | x64, x86 |
Nano Server | Версия 1803+ | x64, ARM32 |
.NET Core 2.1 поддерживает следующие версии Windows:
Символ + представляет минимальную версию.
Операционная система | Version | Архитектуры |
---|---|---|
Клиент Windows | 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 | x64, x86 |
Клиент Windows 10 | Версия 1607+ | x64, x86 |
Windows Server | 2008 R2 с пакетом обновления 1 или более поздней версии (SP1+) | x64, x86 |
Nano Server | Версия 1803+ | x64, |
Автономная установка для Windows 7
Обязательно ознакомьтесь с зависимостями ниже, необходимыми для Windows 7.
Windows 7 / Vista / 8.1 / Server 2008 R2 / Server 2012 R2
Приведенные выше требования также применяются, если возникает ошибка, связанная с любой из следующих библиотек DLL:
Установка с помощью функции автоматизации PowerShell
Сценарии dotnet-install используются для автоматизации непрерывной интеграции и ее осуществления без прав администратора. Вы можете скачать сценарий со страницы справочника по сценариям dotnet-install.
Установка с помощью Visual Studio
Если среда Visual Studio уже установлена, вы можете проверить ее версию, выполнив указанные ниже действия.
Выбор рабочей нагрузки
При установке или изменении Visual Studio выберите одну или несколько из следующих рабочих нагрузок в зависимости от типа создаваемого приложения:
Установка вместе с Visual Studio Code
Visual Studio Code — это эффективный и облегченный редактор исходного кода, который работает на компьютере. Visual Studio Code доступен для Windows, macOS и Linux.
Установщик Windows
/quiet
Предотвращает отображение любого пользовательского интерфейса и запросов.
norestart
Предотвращает все попытки перезапуска.
В случае успешной установки установщик возвращает код 0; если требуется перезагрузка, установщик возвращает код 3010. Любое другое значение обычно является кодом ошибки.
Скачивание и установка вручную
Такой подход позволяет установить несколько версий в отдельные расположения, а затем явно выбрать расположение установки, которое должно использовать приложение, запустив приложение с переменными среды, указывающими на это расположение.
Docker
Контейнеры обеспечивают простой способ изоляции приложения от остальной части основной системы. Контейнеры на одном компьютере совместно использую только ядро, а также используют ресурсы, которые передаются в приложение.
Корпорация Майкрософт предоставляет образы, которые предназначены для конкретных сценариев. Например репозиторий ASP.NET Core содержит образы, которые предназначены для запуска приложений ASP.NET Core в рабочей среде.
.NET — это бесплатная платформа разработки с открытым исходным кодом для создания различных типов приложений, таких как следующие:
Для совместного использования функциональных возможностей различных приложений и типов приложений используются библиотеки классов.
Кроссплатформенные
Поддерживаемые архитектуры процессоров:
.NET позволяет использовать специальные возможности платформы, такие как API операционной системы. Примерами являются Windows Forms и WPF в Windows и собственные привязки к каждой мобильной платформе из Xamarin.
Открытый исходный код
Поддержка
Инструменты и производительность
.NET предоставляет возможность выбора языков, интегрированных сред разработки (IDE) и других средств.
Языки программирования
C# (произносится как «си шарп») — современный объектно-ориентированный и типобезопасный язык программирования. C# относится к широко известному семейству языков C, и покажется хорошо знакомым любому, кто работал с C, C++, Java или JavaScript.
Язык F# поддерживает функциональные, объектно-ориентированные и императивные модели программирования.
Интегрированные среды разработки
Онлайн-среда Visual Studio Code, которая в настоящее время доступна в виде бета-версии.
Пакет SDK и среды выполнения
Загружаемый пакет SDK содержит следующие компоненты.
Загружаемая среда выполнения содержит следующие компоненты.
Дополнительные сведения см. в следующих ресурсах:
Система проектов и MSBuild
И вот один для веб-приложения:
NuGet
Дополнительные сведения см. в документации NuGet.
.NET Interactive — это группа средств и интерфейсов командной строки, которые позволяют пользователям создавать интерактивные возможности в веб-приложениях, разметке и записных книжках.
Дополнительные сведения см. в следующих ресурсах:
Модели выполнения.
.NET CLR — это кроссплатформенная среда выполнения, которая включает поддержку Windows, macOS и Linux. Среда CLR обрабатывает выделение памяти и управление ей. Среда CLR также является виртуальной машиной, которая не только выполняет приложения, но и создает, а также компилирует код с помощью JIT-компилятора.
Для получения дополнительной информации см. Common Language Runtime.
JIT-компилятор и промежуточный язык
Так как JIT-компиляция происходит во время выполнения приложения, время компиляции является частью времени выполнения. Таким образом, JIT-компиляторы должны поддерживать баланс между временем оптимизации кода и экономии, к которой может привести результирующий код. Но JIT-компилятор знает фактическое оборудование и может освободить разработчиков от поставки различных реализаций для различных платформ.
Компилятор AOT
Автоматическое управление памятью
Сборщик мусора (GC) управляет выделением и освобождением памяти для приложений. Каждый раз, когда код создает новый объект, среда CLR выделяет память для объекта из управляемой кучи. Пока в управляемой куче есть доступное адресное пространство, среда выполнения продолжает выделять пространство для новых объектов. Когда остается недостаточное свободное пространство адресов, сборщик мусора проверяет наличие объектов в управляемой куче, которые больше не используются приложением. Затем эта память освобождается.
GC — это одна из служб CLR, которая помогает обеспечить безопасность памяти. Программа является безопасной по памяти, если она обращается только к выделенной памяти. Например, среда выполнения гарантирует, что приложение не обращается к невыделенной памяти за пределами границ массива.
Дополнительные сведения о сборке мусора см. в статьях Автоматическое управление памятью и Основы сборки мусора.
Работа с неуправляемыми ресурсами
Дополнительные сведения см. в разделе Очистка неуправляемых ресурсов.
Модели развертывания
Можно установить несколько версий среды выполнения параллельно, чтобы запускать зависящие от платформы приложения, предназначенные для разных версий среды выполнения. Дополнительные сведения см. в разделе Целевые платформы.
Исполняемые файлы создаются для конкретных целевых платформ, которые указываются с помощью идентификатора среды выполнения (RID).
Библиотеки среды выполнения.
.NET имеет обширный стандартный набор библиотек классов, известный как библиотеки среды выполнения, библиотеки платформы или библиотеки базовых классов (BCL). Эти библиотеки предоставляют реализации для многих общих и зависящих от рабочей нагрузки типов, а также функциональные возможности.
Расширения библиотек среды выполнения
Библиотеки для некоторых часто используемых функциональных возможностей приложения не включены в библиотеки среды выполнения, но доступны в пакетах NuGet, как показано ниже.
Пакет NuGet | Документация |
---|---|
Microsoft.Extensions.Hosting | Управление жизненным циклом приложения (универсальный узел) |
Microsoft.Extensions.DependencyInjection | Внедрение зависимостей |
Microsoft.Extensions.Configuration | Конфигурация |
Microsoft.Extensions.Logging | Logging |
Microsoft.Extensions.Options | Шаблон параметров |
Доступ к данным
.NET предоставляет объектно-реляционный модуль сопоставления (ORM) и способ написания SQL-запросов в коде.
Entity Framework Core
LINQ позволяет писать декларативный код для работы с данными. Данные могут быть представлены разными формами (например, объектами в памяти, содержимым базы данных SQL или XML-документом), но обычно создаваемый код LINQ не отличается для каждого из источников данных.
Уточнение терминологии
Среда выполнения
платформа
Пакет SDK
platform
Сложные сценарии
Взаимодействие на уровне машинного кода
Основным способом осуществления взаимодействия с собственными API является «вызов неуправляемого кода» или сокращенно P/Invoke. P/Invoke поддерживается на платформах Linux и Windows. Способ, который подходит только для Windows, называется «COM-взаимодействием» и используется для работы с COM-компонентами в управляемом коде. Он основан на инфраструктуре P/Invoke, но работает иначе.
Небезопасный код
Дополнительные сведения см. в разделе Небезопасный код и указатели.
Долгосрочная поддержка
Выпуск | Примечание. |
---|---|
.NET Core 3.0 | Окончание жизненного цикла 3 марта 2020 г. |
.NET Core 2.2 | Окончание жизненного цикла 23 декабря 2019 г. |
.NET Core 2.1 | Окончание жизненного цикла 21 августа 2021 г. |
Файл appHost в macOS и заверение
Параметр командной строки
Дополнительные сведения о параметре UseAppHost см. в разделе Свойства MSBuild для Microsoft.NET.Sdk.
Windows Forms
Только для Windows
В Windows Forms внесены критические изменения.
Удаленный элемент управления | Рекомендуемая замена | Соответствующие удаленные интерфейсы API |
---|---|---|
DataGrid | DataGridView | DataGridCell DataGridRow DataGridTableCollection DataGridColumnCollection DataGridTableStyle DataGridColumnStyle DataGridLineStyle DataGridParentRowsLabel DataGridParentRowsLabelStyle DataGridBoolColumn DataGridTextBox GridColumnStylesCollection GridTableStylesCollection HitTestType |
ToolBar | ToolStrip | ToolBarAppearance |
ToolBarButton | ToolStripButton | ToolBarButtonClickEventArgs ToolBarButtonClickEventHandler ToolBarButtonStyle ToolBarTextAlign |
ContextMenu | ContextMenuStrip | |
Menu | ToolStripDropDown ToolStripDropDownMenu | MenuItemCollection |
MainMenu | MenuStrip | |
MenuItem | ToolStripMenuItem |
Только для Windows
Чтобы добавить поддержку C++/CLI в Visual Studio 2019 версии 16.4, установите рабочую нагрузку Разработка классических приложений на C++. При использовании этой рабочей нагрузки в Visual Studio добавляется два шаблона:
Перфоманс
Помимо результатов бенчмарков от TechEmpower, Microsoft также рассказывает и о других улучшениях. Например, сериализация JSON стала работать на 20% быстрее, а сериализация больших коллекций и массивов ускорилась аж в три раза.
За счет чего это происходит? В первую очередь, благодаря изменениям в GC, которые привели к уменьшению количества аллокаций и ускорению сборки мусора. Кстати, все эти изменения осуществляются одновременно с переписыванием GC на C#, а значит его код становится куда доступнее, понятнее и безопаснее. Подробности можно почитать в статье от Microsoft.
Другие изменения коснулись JIT компиляции, асинхронности и многих методов базовой библиотеки. Это касается методов, относящихся к работе со строками, регулярными выражениями и, что особенно важно, с коллекциями и сериализацией. Во все той же статье приводится много примеров таких изменений, с соответствующими пулл-реквестами и бенчмарками.
Изменения в JSON сериализации выглядят особенно впечатляюще. Только посмотрите на результаты бенчмарка по сериализации больших массивов!
Коротко — пятый дотнет сильно вырос в производительности и это важнейшая часть нового релиза. Большинство стандартных веб-приложений могут ожидать прирост производительности на 20% и выше, а отдельные приложения могут и вовсе ускориться в несколько раз.
Языковое
Самое заметное изменение — это record-типы, позволяющие избавиться от бойлерплейта при написании DTO. Записи — это иммутабельные ссылочные типы с простым и коротким объявлением. В них по умолчанию определены методы Equals, HashCode, Copy, Clone, PrintMembers и ToString — разумеется, все они используют значения полей типа для выполнения операций. То есть Equals корректно сравнивает две записи по значениям, а не по ссылке.
Также записи поддерживают синтаксис копирования с изменением значений полей через with, например:
Больше о применении записей вы можете почитать в блоге Владимира Хорикова и в публикации от Konrad Kokosa.
Другое важное изменение — это обновленный pattern matching. Теперь паттерны могут настраиваться по типам и операторам сравнения, причем несколько разных сравнений вы можете объединять через логические операторы. Например:
Остальные изменения не столь заметны — они касаются верхнеуровневых программ (возможность писать короткие программы без базового класса и функции main), упрощенного синтаксиса для new (без указания типа), init-only сеттеров и прочего.
Последние изменения в новом C#, которые хотелось бы упомянуть — это расширенная поддержка для source generators. Этот функционал позволяет генерировать код при компиляции проекта и зачастую очень удобен для авторов библиотек. В новом релизе работу с генераторами кода сделали чуть проще, расширив функционал partial классов (с них сняли некоторые из старых ограничений) и добавив инициализаторы модулей (методы, которые вызываются до первого доступа к любому полю/методу модуля).
Хороший пример работы с генераторами кода вы можете найти в этой статье на Medium.
Отдельно стоит рассказать про F# 5. В новой версии языка добавилась масса классных возможностей для скриптов (например, директива для подключения nuget пакетов), slicing для более удобной работы с данными, а также улучшилась работа с quotation expressions и computation expressions. А еще сильно улучшился интероп с C# и перфоманс. Словом, новый релиз выглядит интересно и делает F# потенциально полезнее в продакшене. Полное описание всех изменений можно найти на сайте Microsoft.
Коротко — язык оброс разнообразным сахаром. Самое заметное изменение в C# 9 — это записи, но едва ли оно само по себе стоит обновления. С другой стороны, если вы будете обновлять версию дотнета по каким-то другим причинам, то у вас появится новый функционал, делающий язык чуть более мощным. Мелочь, а приятно.
Прочее
Помимо глобальных улучшений платформы Microsoft также неплохо поработали над отдельными библиотеками.
Помимо прочего, для десктопной разработки под Windows также добавили нормальный визуальный дизайнер, тулинг, новые контролы и улучшенную поддержку для старых. Словом — если вы разрабатываете приложения с использованием WinForms или WPF, ваша жизнь станет лучше.
Еще больше улучшений появилось для фулстек веб-разработки с использованием Blazor. Главное из них это улучшения производительности — Microsoft обещают, что WebAssembly версия Blazor ускорится аж в три раза. Одной из основных причин такого роста производительности стал пререндер на стороне сервера. А еще добавили ленивую подгрузку зависимостей, изоляцию CSS/JS в рамках файла, новые контролы и многое другое. В общем, если вы собирались попробовать Blazor, но все никак не доходили руки — сейчас он выглядит куда более production-ready технологией.
А еще Microsoft выкатили Project Tye, который как раз является инструментом для удобного управления микросервисами. На текущий момент трудно сказать, стоит ли использовать Tye в продакшене, но обратить внимание и поиграться с ним в свободное время определенно нужно.
Коротко — Microsoft улучшили поддержку отдельных инструментов и добавили приятных фич для облака. Если вы используете WinForms, WPF или Blazor — обновиться определенно стоит.
Миграция
Итого
Подведем итоги. Стоит ли мигрировать на новый дотнет и ради чего?
Кажется, самое важное, ради чего стоит заморачиваться — это перфоманс. Ускорили практически все и достаточно заметно. Как на низком уровне — через улучшения в GC и JIT — так и на уровне отдельных частей фреймворка. Так что, если вы хотите выиграть в производительности, стоит как минимум попробовать обновить версию фреймворка и замерить, насколько ускорились основные сценарии.
C# 9 определенно не является серьезным мотивом для переезда на новый дотнет, но принесет с собой приятных обновлений синтаксиса за компанию. В то же время и рекорды, и паттерн матчинг добавляют много возможностей сделать код более запутанным — советую обсудить это в команде и решить, как лучше использовать (или не использовать) их в проекте.
И на этом все! Удачной миграции на новый дотнет. Оставайтесь на связи, мы вернемся с более подробными материалами про современные возможности дотнета.
Какая разница между SDK и Runtime в.NET Core?
Я читал много статей, в том числе и этот, но я пока не могу понять, в чем разница, и они не объяснили это ни в простых терминах, ни вообще.
Может кто-то прояснить, какая разница между.NET SDK и.NET Runtime?
Обновление: использование сравнений было бы очень оценено. Аналогия наряду с простым английским языком является высокообразованной.
ОТВЕТЫ
Ответ 1
Согласно основному руководству.Net Core,.NET Core состоит из следующих элементов:
Для запуска приложения требуется только последнее, но первое необходимо для разработки приложения.
Ответ 2
Я ничего здесь не изобретаю. Просто скопируйте и вставьте определения из https://www.microsoft.com/net/download
Ответ 3
Время выполнения: запуск приложений
SDK (Runtime + Tooling): создавать и запускать приложения
Ответ 4
Для разработки, сборки и публикации приложения потребуется SDK.
Выполнение следующей команды предоставит информацию об установке:
Ниже приведен пример вывода команды.
Установка SDK также устанавливает среду выполнения.
MacOS доморощенный
Установка homebrew- cask dotnet будет конфликтовать с dotnet-sdk, поэтому для получения как среды выполнения, так и sdk установите dotnet-sdk
Короче говоря, среда выполнения позволит вашей ОС запускать скомпилированные программы C-Sharp, С#, а SDK позволит вам компилировать программы, написанные на C-Sharp, С#.
SDK является либо последним глобально установленным SDK, который используется по умолчанию, либо вы можете явно переопределить SDK в файле global.json, расположенном в корневой папке решения. Следующее явно вынуждает мой проект использовать последний RC SDK вместо версии RTM:
.NET Core Runtime
Обратите внимание, что установка во время выполнения не включает зависимости времени выполнения метапакета ASP.NET Core, поэтому, если ваше приложение ссылается на Microsoft.AspNetCore.App или Microsoft.AspNetCore.All, вам необходимо отдельно загрузить пакет ASP.NET Core. Однако, если вы явно ссылаетесь на все пакеты ASP.NET Core Nuget, а не используете мета-пакеты, эти пакеты развертываются как часть вашего приложения, и он может работать только во время выполнения.
По сути, вы торгуете размером установочного пакета и требованиями к предварительной установке во время выполнения.
Ответ 5
В итоге: если вы установите SDK, у вас будет все необходимое для разработки и запуска приложения.
Ответ 6
Ответ 7
SDK обычно включает документацию и другие файлы справки. Время выполнения содержит только двоичные файлы для установки.
Ответ 8
Ответ 9
Когда вы устанавливаете SDK, вы также получаете время выполнения. Проверьте это ниже, это то, что устанавливается при установке SDK.