.NET Core: различия между версиями

Материал из ALT Linux Wiki
(update: .NET 6 in p9, p10 and Sisyphus)
 
(не показано 29 промежуточных версий 6 участников)
Строка 1: Строка 1:
Пока не опакечено.
.NET Core — это универсальная платформа разработки, которая поддерживается корпорацией Майкрософт и сообществом .NET на сайте [https://github.com/dotnet/core GitHub]. Она является кроссплатформенной: поддерживает Windows, Mac OS и Linux. Имеет открытый исходный код: распространяется по лицензиям MIT и Apache 2.


Для работы (p8 по состоянию 21.03.2017) можно использовать инструкции с сайта microsoft, касающиеся '''Fedora 23'''
Начиная с .NET 5, версии называются .NET (без "Core" в названии), что символизирует объединение .NET Core, Mono и .NET Framework. Также в этой версии появилась поддержка архитектур Arm - Arm32 (armh, armv7) и Arm64 (aarch64, armv8).
 
Платформа .NET Core является кроссплатформенным аналогом .NET Framework на уровне библиотек базовых классов (BCL) .NET Framework. Она реализует спецификацию библиотеки [https://docs.microsoft.com/ru-ru/dotnet/standard/library .NET Standard].
 
Важным отличием от проекта Mono, который направлен на создание свободной среды, совместимой с .NET Framework, является то, что .NET Core не имеет реализации Windows Forms и не реализует API .NET Framework с использованием тех же имён сборок, то есть не позволяет запускать приложения, собранные для .NET Framework.
 
Для ALT p9, p10 и Sisyphus собран .NET 6, соответствующий спецификации .NET Standard 2.1.
 
В составе SDK поставляется компилятор C# с открытым исходным кодом из состава .NET Compiler Platform — [https://github.com/dotnet/roslyn Roslyn].
 
В качестве среды разработки удобно использовать [[Visual Studio Code]] (см. подробнее по ссылке), для которого имеется расширение, позволяющее отлаживать приложения, написанные на C# под .NET Core на Linux.
 
[https://dotnet.github.io/ Welcome to .NET Core] от Microsoft.
 
https://stevedesmond.ca/images/blog/dotnet-dependencies.png


* https://www.microsoft.com/net/core#linuxfedora


== Установка ==
== Установка ==
Установите дополнительные пакеты:
Для установки среды выполнения (CoreCLR) с необходимыми библиотеками установите мета-пакет dotnet:
  apt-get install libunwind libicu56
  apt-get install dotnet
 
Для разработки приложений установите SDK для .NET Core (пакет dotnet-sdk):
Скачайте саму .NET для '''Fedora 23'''
  apt-get install dotnet-sdk
<source lang="text">curl -SL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=843457</source>
от root:
  mkdir /opt/dotnet
  tar xzf dotnet.tar.gz -C /opt/dotnet
  ln -s /opt/dotnet/dotnet /usr/local/bin


== Проверка (не от root)==
== Создание приложения «Hello, world!» ==
(Желательно иметь в /tmp >2 ГБ свободного места)
(Необходимо иметь в домашнем каталоге >2 ГБ свободного места)
   dotnet new console -o hwapp
   dotnet new console -o hwapp
   cd hwapp
   cd hwapp
   dotnet restore
   dotnet restore
  dotnet build
   dotnet run
   dotnet run


== можно установить Visual Studio Code ==
=== Вывод команд ===
https://code.visualstudio.com/
<source lang="text">
Устанавливать из .tar.gz для Linux x64
$ dotnet new console -o hwapp
запускать code
 
Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
 
Telemetry
--------------
The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community.
You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell.
You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry.
 
Configuring...
-------------------
A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
Decompressing 100% 7675 ms
Expanding 100% 14205 ms
Getting ready...
The template "Console Application" was created successfully.
 
Processing post-creation actions...
Running 'dotnet restore' on hwapp/hwapp.csproj...
Restore succeeded.
 
$ cd hwapp
$ dotnet run
Hello World!
</source>
 
== Основные команды ==
Всё взаимодействие с .NET Core из командной строки осуществляется через команду
$ dotnet
Для запуска приложения:
$ dotnet программа
Для запуска команды управления пакетами [https://docs.microsoft.com/en-us/nuget/tools/nuget-exe-cli-reference NuGet]:
$ dotnet nuget
Для скачивания и подготовки всех необходимых для сборки проекта пакетов:
$ dotnet restore
Для сборки [https://docs.microsoft.com/ru-ru/dotnet/core/tools/dotnet-msbuild проекта MSBuild] ([https://docs.microsoft.com/ru-ru/visualstudio/msbuild/msbuild-command-line-reference подробнее о MSBuild]):
$ dotnet msbuild
Для запуска тестов [https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest MSTest] или [https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test xUnit]:
$ dotnet test
 
Об использовании .csproj-файлов вместо устаревших project.json: https://docs.microsoft.com/ru-ru/dotnet/core/tools/cli-msbuild-architecture
 
== Диагностика ==
$ dotnet run --verbosity diag
 
== Desktop-приложения ==
 
Сама по себе платформа .NET Core покрывает и поддерживает только модель консольных приложений и приложений ASP.NET Core. Реализация WPF (Windows Presentation Foundation) [https://www.microsoft.com/net/learn/apps/desktop отсутствует] для платформы Linux.<!--Для создания графического интерфейса можно смотреть на [https://www.xamarin.com/forms Xamarin Forms]. -->
 
В настоящее время (июль 2017) шаги к портированию WPF на .NET Core [https://github.com/dotnet/corefx/issues/5766 заключаются] в обсуждении стандарта [https://github.com/microsoft/xaml-standard XAML Standard], которым описываются UI-элементы, чтобы появилась возможность реализовать System.XAML. После чего возникнет теоретическая возможность портировать/реализовать WPF поверх .NET Core.
 
Основная статья: [[.NET Core GUI]].
 
== ASP.NET ==
Частью ASP.NET Core является кросс-платформенный веб-сервер [https://github.com/aspnet/KestrelHttpServer KestrelHttpServer].
 
* [https://docs.microsoft.com/en-us/aspnet/core/getting-started Начинаем работать с ASP.NET Core].
* [https://habrahabr.ru/company/microsoft/blog/275561/ ASP.NET 5 мёртв — представляем ASP.NET Core 1.0 и .NET Core 1.0]
 
Установить пакет dotnet-aspnetcore
apt-get install dotnet-aspnetcore
 
Тестовое веб-приложение:
$ mkdir aspnetcoreapp
$ cd aspnetcoreapp
$ dotnet new web
$ dotnet run
Проверяем http://localhost:5000
 
Если требуется доступ отовсюду, то запускаем так
$ dotnet run --urls "http://*:5000;https://*:5001"
Однако, по рекомендации MS, если приложение смотрит в Интернет, нужно использовать обратный прокси-сервер (IIS, Nginx или Apache).
 
== Особенности ==
* Поддерживается только 64-битная платформа (x86_64).
 
* В настоящий момент nuget нормально не поддерживает работу в оффлайн-режиме (с предварительно подготовленным кэшем), и даже с использованием локального репозитория есть проблемы.
 
== ARM ==
* https://stevedesmond.ca/blog/net-core-on-arm
 
== Ссылки ==
* [https://docs.microsoft.com/ru-ru/dotnet/standard/components Архитектурные компоненты .NET]
* [https://docs.microsoft.com/ru-ru/dotnet/core/ .NET Core]
* [https://docs.microsoft.com/ru-ru/dotnet/core/tutorials/using-with-xplat-cli .NET Cli для начинающих]
* [https://docs.microsoft.com/ru-ru/dotnet/core/tools/dotnet-publish публикация приложения]
* [https://docs.microsoft.com/ru-ru/dotnet/core/porting/ Перенос кода в .NET Core из .NET Framework]
* [https://habr.com/ru/company/raiffeisenbank/blog/451136/ Представлен .NET 5 (релиз в ноябре 2020 года)]
 
== Исходный код ==
* [https://github.com/dotnet/runtime dotnet/runtime] — содержит .NET Core runtime, называемый CoreCLR и базовую библиотеку (mscorlib) с низкоуровневыми классами и базовыми типами данных.
* [https://github.com/dotnet/sdk dotnet/sdk] — исходный код команд, касающихся сборки проекта (таких, как 'dotnet build', 'dotnet restore' и 'dotnet publish').
 
* [https://github.com/dmetzgar/corewf corewf] — неофициальный порт Windows Workflow Foundation на .NET (без XAML не работает) ([https://github.com/dotnet/corefx/issues/2394 состояние портирования])
* [https://github.com/Microsoft/referencesource referencesource] — исходный код части модулей .NET Framework 4.7 (для сверки)


[[Категория: .NET]]
[[Категория: .NET]]

Текущая версия от 16:50, 19 августа 2022

.NET Core — это универсальная платформа разработки, которая поддерживается корпорацией Майкрософт и сообществом .NET на сайте GitHub. Она является кроссплатформенной: поддерживает Windows, Mac OS и Linux. Имеет открытый исходный код: распространяется по лицензиям MIT и Apache 2.

Начиная с .NET 5, версии называются .NET (без "Core" в названии), что символизирует объединение .NET Core, Mono и .NET Framework. Также в этой версии появилась поддержка архитектур Arm - Arm32 (armh, armv7) и Arm64 (aarch64, armv8).

Платформа .NET Core является кроссплатформенным аналогом .NET Framework на уровне библиотек базовых классов (BCL) .NET Framework. Она реализует спецификацию библиотеки .NET Standard.

Важным отличием от проекта Mono, который направлен на создание свободной среды, совместимой с .NET Framework, является то, что .NET Core не имеет реализации Windows Forms и не реализует API .NET Framework с использованием тех же имён сборок, то есть не позволяет запускать приложения, собранные для .NET Framework.

Для ALT p9, p10 и Sisyphus собран .NET 6, соответствующий спецификации .NET Standard 2.1.

В составе SDK поставляется компилятор C# с открытым исходным кодом из состава .NET Compiler Platform — Roslyn.

В качестве среды разработки удобно использовать Visual Studio Code (см. подробнее по ссылке), для которого имеется расширение, позволяющее отлаживать приложения, написанные на C# под .NET Core на Linux.

Welcome to .NET Core от Microsoft.

https://stevedesmond.ca/images/blog/dotnet-dependencies.png


Установка

Для установки среды выполнения (CoreCLR) с необходимыми библиотеками установите мета-пакет dotnet:

apt-get install dotnet

Для разработки приложений установите SDK для .NET Core (пакет dotnet-sdk):

apt-get install dotnet-sdk

Создание приложения «Hello, world!»

(Необходимо иметь в домашнем каталоге >2 ГБ свободного места)

  dotnet new console -o hwapp
  cd hwapp
  dotnet restore
  dotnet build
  dotnet run

Вывод команд

$ dotnet new console -o hwapp

Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.

Telemetry
--------------
The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community.
You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell.
You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry.

Configuring...
-------------------
A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
Decompressing 100% 7675 ms
Expanding 100% 14205 ms
Getting ready...
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on hwapp/hwapp.csproj...
Restore succeeded.

$ cd hwapp
$ dotnet run
Hello World!

Основные команды

Всё взаимодействие с .NET Core из командной строки осуществляется через команду

$ dotnet

Для запуска приложения:

$ dotnet программа

Для запуска команды управления пакетами NuGet:

$ dotnet nuget

Для скачивания и подготовки всех необходимых для сборки проекта пакетов:

$ dotnet restore

Для сборки проекта MSBuild (подробнее о MSBuild):

$ dotnet msbuild

Для запуска тестов MSTest или xUnit:

$ dotnet test

Об использовании .csproj-файлов вместо устаревших project.json: https://docs.microsoft.com/ru-ru/dotnet/core/tools/cli-msbuild-architecture

Диагностика

$ dotnet run --verbosity diag

Desktop-приложения

Сама по себе платформа .NET Core покрывает и поддерживает только модель консольных приложений и приложений ASP.NET Core. Реализация WPF (Windows Presentation Foundation) отсутствует для платформы Linux.

В настоящее время (июль 2017) шаги к портированию WPF на .NET Core заключаются в обсуждении стандарта XAML Standard, которым описываются UI-элементы, чтобы появилась возможность реализовать System.XAML. После чего возникнет теоретическая возможность портировать/реализовать WPF поверх .NET Core.

Основная статья: .NET Core GUI.

ASP.NET

Частью ASP.NET Core является кросс-платформенный веб-сервер KestrelHttpServer.

Установить пакет dotnet-aspnetcore

apt-get install dotnet-aspnetcore

Тестовое веб-приложение:

$ mkdir aspnetcoreapp
$ cd aspnetcoreapp
$ dotnet new web
$ dotnet run

Проверяем http://localhost:5000

Если требуется доступ отовсюду, то запускаем так

$ dotnet run --urls "http://*:5000;https://*:5001"

Однако, по рекомендации MS, если приложение смотрит в Интернет, нужно использовать обратный прокси-сервер (IIS, Nginx или Apache).

Особенности

  • Поддерживается только 64-битная платформа (x86_64).
  • В настоящий момент nuget нормально не поддерживает работу в оффлайн-режиме (с предварительно подготовленным кэшем), и даже с использованием локального репозитория есть проблемы.

ARM

Ссылки

Исходный код

  • dotnet/runtime — содержит .NET Core runtime, называемый CoreCLR и базовую библиотеку (mscorlib) с низкоуровневыми классами и базовыми типами данных.
  • dotnet/sdk — исходный код команд, касающихся сборки проекта (таких, как 'dotnet build', 'dotnet restore' и 'dotnet publish').