Стандартные и настраиваемые конфигурации наборов инструментов
MSBuild 3.5 включает два готовых набора инструментов. Наборы инструментов представляют собой задачи, целевые объекты и средства работы с командной строкой, которые можно использовать для создания проекта. Можно также создавать пользовательские наборы инструментов.
Примечание
Прежде чем продолжить работу, рекомендуем ознакомиться с материалом Использование MSBuild для настройки проектов для определенных версий .NET Framework, чтобы лучше понимать возможности наборов инструментов, целевые архитектуры и разбираться в версиях ToolsVersions.
Типы наборов инструментов
При определении пользовательского набора инструментов также определяется значение каталога, на который указывает $(MSBuildToolsPath). Поэтому в файле проекта можно использовать $(MSBuildToolsPath) для импортирования задач и целевых объектов вместо жестко запрограммированных значений задачи и целевого объекта в файле проекта. Это позволяет глобально определять наборы инструментов либо в реестре, либо в файле конфигурации, обеспечивая создание настольных приложений разработчика или встроенных рабочих сценариев.
С помощью наборов инструментов можно задать MSBuild для конкретных версий .NET Framework. Это означает, что можно создать проект, который работает только с Visual Studio 2008, и что также можно создавать проекты Visual Studio 2005 в Visual Studio 2008.
Visual Studio 2008 включает два "стандартных" набора инструментов. Один набор инструментов, который также включен с MSBuild 2.0 в Visual Studio 2005, предназначен для .NET Framework 2.0. Другой набор, включенный в MSBuild 3.5, может предназначаться для .NET Framework 2.0, .NET Framework 3.0 и .NET Framework 3.5.
Стандартные конфигурации наборов инструментов
MSBuild 3.5 включает следующие стандартные наборы инструментов:
ToolsVersion |
MSBuildToolsPath или MSBuildBinPath |
---|---|
2.0 |
<Путь установки Windows>\Microsoft.Net\Framework\v2.0.50727\ |
3.5 |
<Путь установки Windows>\Microsoft.NET\Framework\v3.5.20223\ |
Стандартные наборы инструментов доступны в любом расположении на компьютере при запуске файла MSBuild.exe или создании экземпляра обработчика MSBuild, если информация, содержащаяся в наборе инструментов, не переопределяется в файле конфигурации MSBuild.exe.config или в файле конфигурации, определенном сервером.
Значение ToolsVersion, заданное в качестве атрибута в теге Project файла проекта, определяет, какой набор инструментов будет использоваться созданным проектом Visual Studio. ToolsVersion можно рассматривать как "имя" набора инструментов. Если в проекте не указано ToolsVersion, используется значение ToolsVersion по умолчанию. Для MSBuild 3.5 значение ToolsVersion по умолчанию — 2.0. Это означает, что проекты, построение которых выполняется без явного задания параметра ToolsVersion, будут использовать набор инструментов 2.0, входящий в состав Visual Studio 2005. Все проекты Visual Studio 2010 автоматически создаются со значением ToolsVersion, равным 3.5. Поскольку при этом используется новый набор инструментов, проекты могут работать со всеми тремя версиями .NET Framework.
Стандартные сведения о наборе инструментов определяются в следующих разделах реестра:
Узел реестра |
Строковое имя раздела реестра |
Значение строки раздела реестра |
---|---|---|
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\3.5\ |
DefaultToolsVersion |
2.0 |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\ |
ToolsPath |
Путь установки .NET Framework 2.0 |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5\ |
ToolsPath |
.NET Framework Путь установки версии 3.5 |
В DefaultToolsVersion задается какой набор инструментов следует использовать при создании проекта, в котором не указан набор инструментов. Например, значение DefaultToolsVersion для MSBuild в Visual Studio 2010 равняется 2.0. Значение DefaultToolsVersion может быть переопределено в файлах конфигурации, определяемых сервером. Другие значения определяют пути установки для версий .NET Framework.
Примечание
Не рекомендуется изменять эти параметры без необходимости.Тем не менее, можно добавлять собственные параметры и задавать действующие в пределах компьютера пользовательские определения для набора инструментов, как описывается в следующем разделе.
Пользовательские определения для набора инструментов
Если стандартный набор инструментов не удовлетворяет необходимым требованиям построения, можно создать пользовательский набор инструментов. Например, возможен лабораторный сценарий с построением, в котором необходимо иметь отдельную систему построения для создания проектов Visual C++. С помощью пользовательского набора инструментов можно при создании проектов или запуске файла MSBuild.exe назначить атрибуту ToolsVersion пользовательские значения. Это позволяет также использовать свойство $(MSBuildToolsPath) для импорта TARGETS-файлов из данного каталога.
Укажите пользовательский набор инструментов в файле конфигурации для MSBuild.exe (или для определенного пользователем сервера MSBuild, если имеется отдельный компьютер, на котором установлено ядро MSBuild). Например, файл конфигурации для MSBuild.exe может включать в себя следующие определения набора инструментов:
<msbuildToolsets default="3.0">
<toolset toolsVersion="4.0">
<property name="MSBuildToolsPath"
value="C:\Windows\Microsoft .NET\Framework\v3.0" />
</toolset>
</msbuildToolsets>
<msbuildToolsets> — это пользовательская часть конфигурации .NET, которую необходимо также задать в файле конфигурации следующим образом:
<configSections>
<section name="msbuildToolsets"
Type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
</section>
</configSections>
Примечание
Чтобы обеспечить правильное считывание тега configSections, он должен быть первым тегом в теге конфигурации.
ToolsetConfigurationSection — это пользовательская часть конфигурации, которую может использовать любой сервер в качестве пользовательской конфигурации. Если используется пользовательский набор инструментов, то серверу ничего не нужно делать для инициализации ядра построения, кроме ввода файла конфигурации. Определив записи в реестре, можно задать действующий в пределах компьютера набор инструментов, применимый к MSBuild.exe, Visual Studio, и всем серверам MSBuild.
Примечание
Если в файле конфигурации заданы параметры для ToolsVersion, которые уже были определены в реестре, то эти два определения не сливаются вместе.Определение в файле конфигурации имеет преимущество, поэтому параметры в реестре для этого значения ToolsVersion не учитываются.
Следующие свойства зависят от того значения ToolsVersion, которое используется в проектах:
$(MSBuildBinPath) — путь MSBuildBinPath, установленный в качестве значения ToolsPath, которое задается либо в реестре, либо в файле конфигурации, где определено значение ToolsVersion. Параметр $(MSBuildToolsPath) в реестре или в файле конфигурации задает местоположение набора инструментов. В файле проекта это соответствует свойству $(MSBuildBinPath), а также свойству $(MSBuildToolsPath).
$(MSBuildBinPath) — это зарезервированное свойство предоставляется свойством MSBuildToolsPath, заданным в файле конфигурации. (Это свойство заменяет собой $(MSBuildBinPath). Однако для обеспечения совместимости используется $(MSBuildBinPath)).
Вы можете также добавить в файл конфигурации пользовательские и зависящие от ToolsVersion свойства, используя тот же самый синтаксис, который применяется для добавления свойств MSBuildToolsPath. Такие пользовательские свойства будут доступны для файла проекта, если используется имя, совпадающее со значением, указанным в файле конфигурации.