Связь между C # 8.0, NET Core 3.0 и Visual Studio - PullRequest
0 голосов
/ 19 февраля 2019

Статья Сборка C # 8.0 гласит

Текущий план состоит в том, что C # 8.0 будет поставляться одновременно с .NET Core 3.0.Тем не менее, функции начнут оживать с предварительными версиями Visual Studio 2019, над которыми мы работаем.

Какая связь между C # 8.0, NET Core 3.0 и Visual Studio?

В качестве продолжения меня также смущает вопрос о том, какова на самом деле новая языковая версия с точки зрения физического развертывания.Это новые сборки, развернутые как часть новой установки Visual Studio, или часть сетевой установки sdk core или что-то еще?Нужно ли добавлять C # 8 как в полную платформу, так и в .NET Core?

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Существует два способа заставить C # 8.0 компилироваться:

  • Использовать следующую Visual Studio с компилятором Roslyn, который его понимает.(например, Visual Studio 2019)
  • Установите автономный пакет .NET Core SDK (3.0.0, если он доступен) и вызовите 'dotnet build'

Сейчас идет сборка для .NET Core 3.0.Для 0 потребуется установить тот же SDK.

Для сборки .NET 4.8 потребуется установить SDK для .NET Full Framework 4.8.

Оба SDK, вероятно, будут поставляться с Visual Studio 2019 иливам придется установить их позже, чтобы иметь возможность ориентироваться на эти платформы.

Итак: - C # -> Roslyn compiler

  • runtime -> соответствующий SDK

Небольшое дополнение. Глядя на поддержку новых функций в C #, Microsoft явно не сделает .NET Full Framework (4.8 и более поздние версии) .NET Standard 2.1 совместимым.В будущем будет развиваться только .NET Core.

0 голосов
/ 02 марта 2019

Взгляните на Обновление версий C # и инструментария C # , которое дает хорошее представление о языке применительно к проектам в Visual Studio.

В частности,

В этом сценарии выбрана языковая версия по умолчанию: Предварительный просмотр .Функции C # 8.0, к которым у вас есть доступ, полностью основаны на используемой вами версии компилятора (и, следовательно, .NET SDK).При использовании будущих предварительных просмотров вы можете получить больше (или слегка подправить) функций.Когда вы создаете проект, .NET SDK выдаст предупреждение о том, что это все еще в предварительном просмотре.

В ответ на

Какая связь между C # 8.0, NET Core 3.0 и Visual Studio?

Взаимосвязь между языком, SDK и версией Visual Studio намного слабее, чем раньше.Язык может развиваться независимо от .NET в любом из его воплощений.Это не значит, что это всегда будет правдой.Visual Studio тоже не зависит от языка и фреймворка.Если вы посмотрите на установщик Visual Studio, то увидите, что язык и поддержка .NET - это «рабочие нагрузки», которые можно установить.SDK предоставляет языковые возможности, а VS предлагает инструментарий.

Если вы сейчас собираетесь использовать VS 2017, взгляните на

В качестве продолжения я также запутался какк тому, что на самом деле новая языковая версия с точки зрения физического развертывания

Это SDK, который содержит компилятор, который может создавать сборки из источника C # 8.0.

Это так?новые сборки, развернутые как часть нового развертывания Visual Studio, или часть сетевой установки sdk core или что-то еще?

Часть SDK, см. выше.Это означает, что в дополнение к вашему коду ничего не «развернуто».Ваш код, независимо от версии, нацелен на версию .NET.Тем не менее, целевая версия .NET должна существовать на компьютере или в контейнере.

Нужно ли добавлять C # 8 как в полную платформу, так и в .NET Core?

Это не «нужно добавлять».Более новые версии этой платформы (4.8) и SDK (.NET Core 3.0) поставляются с поддержкой C # 8.0.

0 голосов
/ 25 февраля 2019

Язык C # содержит спецификацию, а также эталонный компилятор Roslyn.

.Net-версия (4.8 или .net Core 3) представляет собой структуру (набор API), которая находится на управляемойвремя выполнения (CLR), которое выполняет скомпилированную программу (на промежуточном языке, тип ассемблерного кода).

Хотя в идеале язык C # не зависит от платформы и не зависит от среды и среды выполнения, за всю историю C # было разработано несколько основных функций языка, в которых текущие версии CLR не допускали эту функцию,или эта функция основывалась на типах более высокого уровня и дополнениях инфраструктуры (например, Async-Await в C # 5 и кортежи значений в определенной степени в C # 7).

В C # 8 такие языковые функции, как Asyncпотоки и диапазоны требуют новых типов каркаса, которые аналогично не существуют в текущих / более ранних версиях каркасов.Новые элементы интерфейса по умолчанию требуют изменений CLR.Таким образом, эти языковые функции (синтаксис) не будут компилироваться с более ранними версиями Framework и CLR.

В отличие от предыдущих языковых итераций, Microsoft не выпускает эти требования в новой версии .Net Framework 4.8.Вместо этого они выдвигают .Net Core 3.0 в качестве эталонной платформы, что позволяет им потенциально быстрее выполнять итерации.

В отношении Visual Studio, в то время как вы могли бы писать код на C # 8 в пределахБолее ранняя версия IDE и ее компиляция в среде выполнения .Net Core 3.0 позволят вам сэкономить на значительном количестве инструментов, простоте и удобстве для разработчиков.Инструменты для подсветки синтаксиса, завершения, исправлений кода и т. Д. Полагаются на Roslyn, который предоставляет богатые API для анализа кода.

Поскольку развертывание инфраструктуры и языков не синхронизировано идеально, использование предварительного просмотра в Visual Studio обеспечивает (в основном) совместимостьверсии фреймворка и языка для тестирования новых функций обоих.

Хорошим справочным материалом является раздел «Зависимости платформы» в блоге Building C # 8.0 .

Редактировать:

Чтобы ответить на вопрос комментария «Как устанавливается C # 8»: язык spec реализован и поставляется как компилятор (Roslyn).Пожалуйста, смотрите Roslyn GitHub репозиторий , в котором описывается, как компилятор собирается, выпускается и устанавливается - с определенной установкой Visual Studio или без нее.

...