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


Настройка MSBuild для различных версий

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

Примечание

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

Ниже приведены несколько преимуществ настройки для различных версий:

  • Можно разрабатывать приложения, которые предназначены для более ранних версий платформы .NET Framework, например версий 2.0, 3.0 и 3.5.

  • Можно ориентироваться на платформы, отличные от .NET Framework, например Silverlight Framework.

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

  • При выпуске пакетов обновления для платформы .NET Framework версии 4 можно ориентироваться на них.

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

Требуемая версия .NET Framework — это конкретная версия платформы .NET Framework, в которой будет выполняться создаваемый проект. Она необходима, поскольку позволяет использовать возможности компилятора, предназначенные исключительно для этой версии платформы .NET Framework 2.0, или ссылки на сборки, поставляемые только в этой версии Framework.

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

  • Набор инструментов, который содержит компиляторы, задачи и целевые объекты, используемые для создания приложения.

  • Базовые сборки, которые используются для разработки и построения приложения.

  • Сборки среды выполнения, которые используются для запуска приложения.

Набор инструментов (ToolsVersion)

Набор инструментов — это подобранный набор задач MSBuild, целевых объектов MSBuild и средств, который устанавливается вместе с MSBuild и .NET Framework. В набор инструментов входят компиляторы (такие как csc.exe и vbc.exe), файл общих целевых объектов (microsoft.common.targets) и файл общих задач (microsoft.common.tasks). Набор инструментов версии 4.0 можно использовать с целевым объектом платформы .NET Framework версий 2.0, 3.0, 3.5 и 4. Однако набор инструментов версии 2.0 можно использовать только с целевым объектом платформы .NET Framework версии 2.0.

Обозначение набора инструментов происходит путем задания атрибута ToolsVersion элемента Project в файле проекта, например:

<Project ToolsVersion="4.0" ...

Набор инструментов версии 4.0 можно использовать для компиляции приложений, запускаемых на различных требуемых версиях .NET Framework, при условии, что для каждой требуемой платформы определенной версии установлен соответствующий целевой пакет. Дополнительные сведения см. в подразделе "Целевые пакеты для определенной версии" данного раздела.

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

Примечание

Visual Studio не содержит интерфейс для изменения набора инструментов.

Базовые сборки

Обычно для платформ имеются связанные с ними базовые сборки. Базовая сборка представляет собой упрощенную сборку без кода, которая предоставляет только общие типы и общие члены.

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

Например, LINQ — это новая технология, включенная в Visual Studio 2008. Платформа .NET Framework 3.5 — единственная версия .NET Framework, в которой представлены сборки, связанные с технологией LINQ. Поэтому LINQ можно использовать только в том случае, если проект предназначается специально для платформы .NET Framework 3.5 или более поздних версий. Аналогично в состав Windows Vista входит Windows Presentation Foundation (WPF). Создавать приложения WPF можно только в том случае, если проект предназначается для платформы .NET Framework 3.0 или более поздних версий .NET Framework.

Целевые пакеты для определенной версии

Базовые сборки становятся доступны после установки соответствующего целевого пакета для определенной версии. Целевой пакет для определенной версии содержит базовые сборки и файл FrameworkList.xml, в котором они перечислены. Файл FrameworkList.xml также называется распространяемым списком.

Целевые пакеты для определенной версии можно получить из следующих источников:

  • Целевые пакеты для определенной версии для платформ .NET Framework версий 2.0, 3.0 и 3.5 включены в платформу .NET Framework версии 3.5 с пакетом обновления 1 (SP1).

  • Целевые пакеты для клиентского профиля .NET Framework версии 3.5, платформы .NET Framework версии 4 и клиентского профиля версии 4, а также для Silverlight включены в Visual Studio.

Обычно целевые пакеты для определенной версии устанавливаются в папку .. \Program Files (x86)\Reference Assemblies\Microsoft\Framework\. Целевой пакет для определенной версии для платформы .NET Framework версии 2.0 обычно устанавливается в папку .. \Windows\Microsoft.NET\Framework\v2.0.50727\ папка.

Если при создании решения или проекта в командной строке указать атрибут ToolsVersion для msbuild.exe, это приведет к тому, что все проекты и зависимости между этими проектами будут построены в соответствии с этой версией набора инструментов, даже если в каждом проекте решения указывается свой собственный атрибут ToolsVersion в Элемент Project (MSBuild).

Сборки среды выполнения

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

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

Выбор целевой платформы для существующего проекта

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

  2. Выберите платформу в списке Целевая версия .NET Framework на вкладке Приложение. В списке отображаются только платформы, для которых установлен целевой пакет для определенной версии.

    На основе выбранной платформы Visual Studio задает значения трех элементов в файле проекта:

    • Элемент TargetFrameworkIdentifier служит для обозначения целевой платформы, например:

      <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>

      Если данный элемент отсутствует, то ему присваивается значение по умолчанию ".NETFramework".

    • Элемент TargetFrameworkVersion служит для обозначения версии целевой платформы, например:

      <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>

    • Элемент TargetFrameworkProfile служит для обозначения профиля целевой платформы, например:

      <TargetFrameworkProfile>Client</TargetFrameworkVersion>

      Если данный элемент отсутствует, используется ориентация на всю платформу.

    Эти три элемента объединяются общими целевыми объектами системы построения Visual Studio для формирования идентификатора, называемого моникером целевой платформы.

Сценарий: ориентирование Visual Studio на платформу .NET Framework версии 3.5

Предположим, что система Visual Studio запущена на платформе .NET Framework версии 4. Для ориентации на платформу .NET Framework версии 3.5 необходимо установить связанные базовые сборки и сборки среды выполнения. Эти сборки включены в состав платформы .NET Framework версии 3.5 с пакетом обновления 1 (SP1).

При данном сценарии в конструкторах Visual Studio отображаются только данные, отфильтрованные базовыми сборками платформы .NET Framework версии 3.5, а построение проекта выполняется в соответствии с данными базовыми сборками. При запуске проекта он выполняется на базе сборок среды выполнения .NET Framework версии 3.5, которые в свою очередь выполняются в среде CLR версии 2.0.

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

Второй сценарий: система Visual Studio запущена на платформе .NET Framework версии 4.1 и ориентирована на платформу .NET Framework версии 4

Предположим, что вышла платформа .NET Framework версии 4.1 и что версии 4 и 4.1 одновременно запущены в среде CLR версии 4. Если установлена платформа .NET Framework версии 4.1, Visual Studio автоматически запускается на ней.

При использовании проекта, предназначенного для платформы .NET Framework версии 4, версия 4 ссылается на сборки, которые позволяют отфильтровать доступные в конструкторах Visual Studio типы и члены, построение самого проекта выполняется в соответствии с этими базовыми сборками, а построенное приложение запускается с использованием сборок среды выполнения из версии 4.

См. также

Основные понятия

Разрешение сборок во время разработки

Дополнительные возможности MSBuild

Журнал изменений

Дата

Журнал

Причина

Август 2010

В этой теме объединено использование MSBuild для настройки проектов для определенных версий платформы .NET Framework.

Улучшение информации.