Стандартные и настраиваемые конфигурации наборов инструментов
Обновлен: Ноябрь 2007
MSBuild Версия 3.5 включает в себя два готовых набора инструментов. Наборы инструментов представляют собой задачи, целевые объекты и средства работы с командной строкой, которые можно использовать для создания проекта. Можно также создавать пользовательские наборы инструментов.
Примечание. |
---|
Прежде чем продолжить работу, рекомендуем ознакомиться с материалом Указание конкретной платформы .NET Framework с помощью MSBuild, чтобы лучше понимать возможности наборов инструментов, целевые архитектуры и разбираться в версиях 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, заданное в качестве атрибута в теге проекта файла проекта, определяет, какой набор инструментов будет использоваться созданным проектом Visual Studio. ToolsVersion можно представлять себе как "имя" набора инструментов. Если в проекте не указано ToolsVersion, то используется значение ToolsVersion по умолчанию. Для MSBuild 3.5 значение ToolsVersion по умолчанию — 2.0. Это означает, что в проектах, построение которых осуществляется без явного использования значения ToolsVersion, будет применяться значение 2.0, включенное в Visual Studio 2005. Все текущие проекты Visual Studio 2008 автоматически создаются со значением 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 2008 составляет 2.0. Значение DefaultToolsVersion может быть переопределено в файлах конфигурации, определяемых сервером. Другие значения определяют пути установки для версий .NET Framework.
Примечание. |
---|
Не рекомендуется изменять эти параметры без необходимости. Тем не менее, можно добавлять собственные параметры и задавать действующие в пределах компьютера пользовательские определения для набора инструментов, как описывается в следующем разделе. |
Пользовательские определения для набора инструментов
Если стандартный набор инструментов не удовлетворяет необходимым требованиям построения, можно создать пользовательский набор инструментов. Например, возможен рабочий сценарий построения, в котором необходимо иметь отдельную систему сборки для создания проектов Visual C++. С помощью пользовательского набора инструментов можно назначить пользовательские значения атрибуту ToolsVersion при создании проектов или запуске файла MSBuild.exe. При этом появляется возможность использовать свойство $(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. Такие пользовательские свойства будут доступны для файла проекта, если используется имя, совпадающее со значением, указанным в файле конфигурации.