Поделиться через


Обзор нацеливания фреймворка

В Visual Studio можно указать версию .NET, для которой будет предназначен проект. Назначение платформы помогает гарантировать, что приложение использует только функциональные возможности, доступные в указанной версии платформы. Чтобы приложения .NET Framework выполнялись на другом компьютере, версия платформы, на которую рассчитано приложение, должна быть совместима с установленной на компьютере версией платформы.

Решение Visual Studio может содержать проекты, предназначенные для различных версий .NET. Однако обратите внимание, что вы можете собирать проект только для одной версии .NET, используя условные операторы в ссылках для одной сборки или создавая разные бинарные файлы для каждой целевой среды. Дополнительные сведения о целевых платформах см. в разделе Целевые платформы.

Совет

Вы также можете ориентировать приложения на разные платформы. Дополнительные сведения см. в Мультитаргетинг.

Функции, ориентированные на фреймворк

Ориентирование на платформу включает следующие функции:

  • При открытии проекта, предназначенного для более ранней версии фреймворка, Visual Studio может автоматически обновить проект или сохранить целевую версию as-isбез изменений.

  • При создании проекта .NET Framework можно указать версию платформы .NET Framework, которую вы хотите нацелить.

  • Вы можете нацеливаться на несколько платформ в одном проекте.

  • Вы можете использовать другую версию .NET в каждом из нескольких проектов в одном решении.

  • Вы можете изменить версию .NET, предназначенную для существующего проекта.

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

При работе с проектом, предназначенным для более ранней версии платформы, Visual Studio динамически изменяет среду разработки следующим образом:

  • Он фильтрует элементы в диалоговом окне Добавление нового элемента, диалоговое окно Добавление новой ссылки и диалоговое окно Добавление ссылки на службу, чтобы опустить варианты, недоступные в целевой версии.

  • Он фильтрует пользовательские элементы управления в панели элементов, чтобы удалить те элементы, которые недоступны в целевой версии, и отобразить только самые up-to-date элементы управления при наличии нескольких элементов управления.

  • Он фильтрует IntelliSense, чтобы опустить языковые функции, недоступные в целевой версии.

  • Он фильтрует свойства в окне свойств , чтобы опустить те, которые недоступны в целевой версии.

  • Он фильтрует параметры меню, чтобы опустить параметры, недоступные в целевой версии.

  • Для сборок используется версия компилятора и параметры компилятора, подходящие для целевой версии.

Заметка

  • Выбор целевой платформы (фреймворка) не гарантирует, что ваше приложение будет работать корректно. Необходимо протестировать приложение, чтобы убедиться, что оно выполняется с целевой версией.
  • Вы не можете использовать версии платформы ниже .NET Framework 2.0.

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

В существующем проекте Visual Basic, C#или F# вы измените целевую версию .NET в диалоговом окне свойств проекта. Дополнительные сведения об изменении целевой версии проектов C++ см. в статье Изменение целевой платформы и набора инструментов платформы.

  1. В обозревателе решенийоткройте контекстное меню правой кнопкой мыши для проекта, в который требуется внести изменения, а затем выберите Свойства.

  2. В левом столбце окна свойств выберите вкладку приложения.

    Вкладка

    Заметка

    После создания приложения UWP нельзя изменить целевую версию Windows или .NET.

  3. В списке Target Framework выберите нужную версию.

  4. В появившемся диалоговом окне проверки нажмите кнопку Да.

    Проект выгружается. Когда он перезагружается, он нацелен на версию .NET, которую вы только что выбрали.

  1. В обозревателе решенийоткройте контекстное меню правой кнопкой мыши для проекта, который требуется изменить, а затем выберите Свойства.

  2. В левом столбце окна Свойства выберите вкладку Приложение.

    Заметка

    После создания приложения UWP нельзя изменить целевую версию Windows или .NET.

  3. В списке Target Framework выберите нужную версию.

    Для проекта .NET Frameworkдиалоговое окно может выглядеть примерно так:

    снимок экрана диалогового окна

    Для проекта .NET диалоговое окно может выглядеть аналогично следующему скриншоту:

    снимок экрана: вкладка

  4. Если появится диалоговое окно проверки, нажмите кнопку Да.

    Проект выгружается. Когда он перезагружается, он нацеливается на версию .NET, которую вы только что выбрали.

Ориентация на несколько фреймворков

С помощью .NET 5 и более поздних версий можно создать проект для нескольких платформ в одной сборке, вручную изменив файл проекта. Откройте файл проекта и замените свойство TargetFramework на TargetFrameworks, а затем перечислите список Target Framework Monikers (TFMs), разделённых точкой с запятой, как показано в следующем коде:

   <TargetFrameworks>net7.0;net8.0</TargetFrameworks>

См. список TFM в платформах Target в проектах в стиле SDK.

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

снимок экрана: вкладка

Заметка

Если код содержит ссылки на другую версию .NET, отличную от целевой, сообщения об ошибках могут появляться при компиляции или запуске кода. Чтобы устранить эти ошибки, измените ссылки. Смотрите статью Устранение ошибок целевой версии .NET.

Кончик

В зависимости от целевой платформы он может быть представлен следующим образом в файле проекта:

  • Для приложения .NET Core: <TargetFramework>netcoreapp2.1</TargetFramework>
  • Для приложения .NET Standard: <TargetFramework>netstandard2.0</TargetFramework>
  • Для приложения .NET Framework: <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>

Выбор версии целевой платформы

При создании проекта .NET Framework можно выбрать целевую версию .NET Framework после выбора шаблона проекта. Список доступных платформ включает установленные версии платформы, применимые к выбранному типу шаблона. Для шаблонов проектов, не предназначенных для .NET Framework, таких как шаблоны .NET Core, раскрывающийся список Framework не отображается.

снимок экрана раскрывающегося списка фреймворка в Visual Studio 2019.

Если вы решили создать проект .NET Framework, вы увидите интерфейс, аналогичный следующему снимку экрана:

снимок экрана раскрывающегося списка Платформы в Visual Studio 2022.

Если вы решили создать проект .NET, вы увидите пользовательский интерфейс (UI), аналогичный приведенным ниже двум снимкам экрана.

На первом экране появится диалоговое окно Настройка нового проекта.

снимок экрана диалогового окна

Вы увидите диалоговое окно Дополнительные параметры на втором экране.

снимок экрана диалогового окна

Устранение ссылок на сборки систем и пользователя

Чтобы нацелиться на версию .NET, сначала необходимо установить соответствующие ссылки на сборки. Пакеты разработчиков можно скачать для различных версий .NET на странице загрузки .NET.

Для проектов .NET Framework диалоговое окно "Добавление ссылки" отключает системные сборки, которые не соответствуют целевой версии .NET Framework, чтобы их нельзя было случайно добавить в проект. (Системные сборки — это .dll файлы, включенные в версию .NET Framework.) Ссылки, принадлежащие версии платформы, которая выше целевой версии, не будут разрешаться, и элементы управления, зависящие от такой ссылки, не могут быть добавлены. Если вы хотите включить такую ссылку, сбросьте целевой объект .NET Framework проекта на такой, который включает ссылку.

Дополнительные сведения о ссылках на сборки см. в разделе Разрешение сборок на этапе проектирования.

Включение LINQ

При нацеливании на платформу .NET Framework версии 3.5 или более поздней, автоматически добавляются ссылка на System.Core и импорт на уровне проекта для System.Linq (только в Visual Basic). Если вы хотите использовать функции LINQ, необходимо также включить Option Infer (только в Visual Basic). Ссылка и импорт удаляются автоматически при изменении целевого объекта на более раннюю версию .NET Framework. Более подробную информацию см. в разделе "Работа с LINQ" .

См. также