Новые возможности .NET Core 2.0

В .NET Core 2.0 представлены следующие улучшения и новые возможности:

Средства

Явное выполнение команды dotnet restore

В предыдущих версиях .NET Core сразу после создания проекта с помощью команды dotnet new, а также после добавления новой зависимости в проект требовалось выполнять команду dotnet restore.

Вам не нужно выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish и dotnet pack. Чтобы отключить неявное восстановление, используйте параметр --no-restore.

Команду dotnet restore по-прежнему удобно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.

Сведения об управлении веб-каналами NuGet см. в документации по dotnet restore.

Вы также можете отключить автоматический вызов команды dotnet restore. Для этого передайте параметр --no-restore команде new, run, build, publish, pack и test.

Изменение целевой платформы на .NET Core 2.0

Если установлен пакет SDK для .NET Core 2.0, для проектов, предназначенных для .NET Core 1.x, можно изменить целевую платформу на .NET Core 2.0.

Чтобы изменить целевую платформу на .NET Core 2.0, измените файл проекта. Для этого измените значение элемента <TargetFramework> или <TargetFrameworks> (при наличии нескольких целевых платформ в файле проекта) с 1.x на 2.0:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
 </PropertyGroup>

Кроме того, можно также выполнить перенацеливание с библиотек .NET Standard на .NET Standard 2.0:

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
 </PropertyGroup>

Дополнительные сведения о переносе проекта в .NET Core 2.0 см. в статье Migrating from ASP.NET Core 1.x to ASP.NET Core 2.0 (Переход с ASP.NET Core 1.x на ASP.NET Core 2.0).

Поддержка языков

Помимо поддержки C# и F# .NET Core 2.0 также поддерживает Visual Basic.

Visual Basic

.NET Core версии 2.0 теперь поддерживает Visual Basic 2017. С помощью Visual Basic можно создать следующие типы проектов:

  • консольные приложения .NET Core;
  • библиотеки классов .NET Core;
  • библиотеки классов .NET Standard;
  • проекты модульных тестов .NET Core;
  • тестовые проекты xUnit .NET Core.

Например, для создания приложения Visual Basic Hello World в командной строке сделайте следующее:

  1. Откройте окно консоли, создайте каталог для проекта и выберите его в качестве текущего.

  2. Введите команду dotnet new console -lang vb.

    Команда создает файл проекта с расширением .vbproj, а также файл исходного кода Visual Basic Program.vb. Этот файл содержит исходный код для записи строки "Hello World!" в окно консоли.

  3. Введите команду dotnet run. Интерфейс командной строки .NET Core автоматически компилируется и выполняет приложение, которое отображает сообщение "Hello World!" в окне консоли.

Поддержка C# 7.1

.NET Core 2.0 поддерживает C# 7.1, в котором реализованы новые возможности, включая следующие:

  • Метод Main, точку входа приложения можно пометить с помощью ключевого слова async.
  • Выводимые имена кортежей.
  • Стандартные выражения.

Улучшения платформы

В .NET Core 2.0 представлены возможности, упрощающие установку платформы .NET Core и ее использование в поддерживаемых операционных системах.

Единая реализация .NET Core для Linux

.NET Core 2.0 предлагает единую реализацию Linux, которую можно использовать в нескольких дистрибутивах Linux. Для .NET Core 1.x требовалось, чтобы вы загрузили реализацию Linux для конкретного дистрибутива.

Кроме того, предусмотрена возможность разработки приложений, предназначенных исключительно для ОС Linux. В .NET Core 1.x требовалось выбирать целевую среду для каждого дистрибутива Linux отдельно.

Поддержка библиотек шифрования Apple

В .NET Core 1.x на macOS требовалась библиотека шифрования для набора средств OpenSSL. .NET Core 2.0 использует библиотеки шифрования Apple и не требует OpenSSL, поэтому больше не нужно устанавливать это решение.

Изменения в API и поддержка библиотек

Поддержка .NET Standard 2.0

.NET Standard определяет набор интерфейсов API с несколькими версиями, которые должны быть доступны в реализациях .NET, соответствующие версии Standard. Решение .NET Standard ориентировано на разработчиков библиотек. Оно предоставляет функции библиотеки, предназначенной для версии .NET Standard в каждой реализации .NET. .NET Core 1.x поддерживает .NET Standard версии 1.6, .NET Core 2.0 поддерживает последнюю версию, .NET Standard 2.0. Дополнительные сведения см. в статье .NET Standard.

.NET Standard 2.0 содержит более 20 000 интерфейсов API, доступных в .NET Standard 1.6. Такое разнообразие является результатом включения в .NET Standard интерфейсов API, стандартных для .NET Framework и Xamarin.

Библиотеки классов .NET Standard 2.0 также могут ссылаться на библиотеки классов .NET Framework, при условии, что они вызывают API-интерфейсы, которые есть в .NET Standard 2.0. Повторная компиляция библиотек .NET Framework не требуется.

Список API, которые были добавлены в .NET Standard с последней версии .NET Standard 1.6, см. в статье .NET Standard 2.0 и 1.6.

Увеличение количества компонентов

Общее количество API-интерфейсов, доступных в .NET Core 2.0, удвоилось по сравнению с .NET Core 1.1.

Пакет обеспечения совместимости Windows существенно упрощает перенос из .NET Framework.

Поддержка библиотек .NET Framework

Код .NET Core может ссылаться на имеющиеся библиотеки .NET Framework, включая имеющиеся пакеты NuGet. Обратите внимание, что библиотеки должны использовать интерфейсы API из .NET Standard.

Интеграция Visual Studio

В Visual Studio 2017 версии 15.3 (в некоторых случаях, в Visual Studio для Mac) внесены значительные улучшения для разработчиков .NET Core.

Изменение целевой платформы приложений .NET Core и библиотек .NET Standard

Если установлен пакет SDK для .NET Core 2.0, можно изменить целевую платформу проектов .NET Core 1.x на .NET Core 2.0, а библиотек .NET Standard 1.x — на .NET Standard 2.0.

Чтобы изменить целевую платформу проекта в Visual Studio, в диалоговом окне свойств проекта откройте вкладку Приложение и измените значение целевой платформы на .NET Core 2.0 или .NET Standard 2.0. Вы также можете изменить его, щелкнув правой кнопкой мыши проект и выбрав параметр Edit *.csproj file . Дополнительные сведения см. в разделе Инструментарий выше.

Поддержка динамического модульного тестирования для .NET Core

При изменении кода функция Live Unit Testing автоматически запускает все затронутые модульные тесты в фоновом режиме и отображает результаты и объем протестированного кода в активном состоянии в среде Visual Studio. Теперь .NET Core 2.0 поддерживает функцию Live Unit Testing. Ранее функция Live Unit Testing была доступна только для приложений .NET Framework.

См. вопросы и ответы о Live Unit Testing и сведения об использовании Live Unit Testing в Visual Studio 2017.

Улучшенная поддержка нескольких целевых платформ

При создании проекта для различных целевых платформ теперь целевую платформу можно выбрать в меню верхнего уровня. На следующем рисунке показано, что целевой платформой проекта SCD1 является 64-разрядная macOS X 10.11 (osx.10.11-x64) и 64-разрядная Windows 10 и Windows Server 2016 (win10-x64). Целевую платформу можно выбрать, прежде чем нажать кнопку проекта (в этом случае — для выполнения отладочной сборки).

Screenshot showing target framework selection when building a project.

Поддержка параллельного выполнения для пакетов SDK для .NET Core

Теперь пакет SDK для .NET Core можно установить отдельно от Visual Studio. Таким образом в одной версии Visual Studio можно создавать проекты, предназначенные для разных версий .NET Core. Ранее Visual Studio и пакет SDK для .NET Core были тесно связаны. Конкретная версия пакета SDK использовалась для конкретной версии Visual Studio.

Улучшения документации

Архитектура приложений .NET

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

См. также