Переопределение параметров ToolsVersion
Можно choice набор инструментов для файла проекта с помощью переключателя /ToolsVersion (или /tv, или сокращенно), присвоив свойству $(ProjectToolsVersion).Это позволяет построение проекта в решении с помощью набора инструментов, отличается от механизма других проектов.Можно также переопределить версию средства использовала задачи MSBuild с помощью установки параметра задачи ToolsVersion.
Переопределение параметров ToolsVersion проектов в построениях из командной строки
Хотя Visual Studio проектов ToolsVersion при построении обычно задается в файле проекта, можно с помощью параметра /ToolsVersion(или /tv) в командной строке на этапе это значение и построение всех проектов и их зависимости проекта на проект с другим набором инструментов.Например:
msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug
В этом примере построение всех проектов выполняется с использованием значения ToolsVersion 3.5.(Тем не менее ознакомьтесь с подразделом "Очередность применения" далее в этом разделе.)
Если в командной строке используется ключ /tv, можно в отдельных проектах использовать дополнительно свойство $(ProjectToolsVersion), чтобы создать их с другим значением ToolsVersion по сравнению с остальными проектами в решении.
Переопределение значения ToolsVersion с использованием параметра ToolsVersion в задаче MSBuild
Задача MSBuild — основное средство для создания одного проекта из другого.Чтобы в задаче MSBuild можно было создать проект со значением ToolsVersion, отличающимся от значения, заданного в проекте, предоставляется дополнительный параметр задачи с именем ToolsVersion.В следующем примере показано, как использовать этот параметр.
Создайте файл с именем projectA.proj файла и содержат следующий код:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <Target Name="go" > <Message Text="projectA.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> <MSBuild Projects="projectB.proj" ToolsVersion="2.0" Targets="go" /> </Target> </Project>
Создать другое с именем projectB.proj файла и содержат следующий код:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>
Введите следующую команду в командной строке:
msbuild projectA.proj /t:go /toolsversion:3.5
Следующий результат.Для projectA, параметр /toolsversion:3.5 в командной строке переопределяет параметр ToolsVersion=4.0 в теге Project.
метод ProjectB вызывается задачей в projectA.Эта задача имеет ToolsVersion=2.0, которая переопределяет другие параметры ToolsVersion для projectB.
Output: projectA.proj MSBuildToolsVersion: 3.5 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v3.5 projectB.proj MSBuildToolsVersion: 2.0 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v2.0.50727
Очередность применения
Порядок приоритетов от самого высокого до самого низкого, задает ToolsVersion, используемый при построении проекта выглядит следующим образом:
Атрибут ToolsVersion в задаче MSBuild, используемой для построения проекта, если таковые имеются.
Параметр /toolsversion (или /tv), которое используется в команде msbuild.exe, если таковые имеются.
Атрибут ToolsVersion элемента Проект в файле проекта.
Версия набора инструментов, заданная по умолчанию в файле MSBuild.exe.config.
Версия набора инструментов, заданная по умолчанию в реестре.Дополнительные сведения см. в разделе Стандартные и настраиваемые конфигурации наборов инструментов.
Пункты 1, 2 и 3 соответствуют свойствам:
Атрибут свойств в задаче MSBuild.
Ключ /p: в файле msbuild.exe.
Тег свойства в файле проекта.
См. также
Основные понятия
Набор инструментов MSBuild (ToolsVersion)
Стандартные и настраиваемые конфигурации наборов инструментов