Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Атрибут ToolsVersion элемента Project в Файлах проекта Visual Studio и MSBuild считается устаревшим в Visual Studio 2019 и более поздних версиях. Его можно безопасно удалить. В этой статье описывается его использование в более ранних версиях MSBuild или для пользовательских наборов инструментов. См . стандартные и настраиваемые конфигурации набора инструментов.
Набор инструментов для проектов и решений можно изменить одним из трех способов:
Используя параметр
-ToolsVersion(или сокращенно-tv) при сборке проекта или решения из командной строки.Задав параметр
ToolsVersionдля задачи MSBuild.Задав свойство
$(ProjectToolsVersion)для проекта в решении. Это позволяет собирать проект в решении с версией набора инструментов, отличающейся от используемой в других проектах.
Переопределение параметров ToolsVersion для проектов и решений, собираемых из командной строки
Хотя в проектах Visual Studio параметр ToolsVersion при сборке обычно задается в файле проекта, можно с помощью параметра командной строки -ToolsVersion (или -tv) переопределить это значение и построить все проекты и зависимости между ними с использованием другого набора инструментов. Например:
msbuild.exe someproj.proj -tv:12.0 -p:Configuration=Debug
В этом примере построение всех проектов выполняется с использованием значения ToolsVersion 12.0. (Ознакомьтесь также с разделом Порядок приоритетов далее в этой статье.)
Если в командной строке используется параметр -tv, можно в отдельных проектах использовать дополнительно свойство $(ProjectToolsVersion), чтобы создать их с другим значением ToolsVersion по сравнению с остальными проектами в решении.
Переопределение параметров ToolsVersion с помощью параметра ToolsVersion в задаче MSBuild
Задача MSBuild — основное средство для создания одного проекта из другого. Чтобы в задаче MSBuild можно было создать проект со значением ToolsVersion, отличающимся от значения, заданного в проекте, предоставляется дополнительный параметр задачи с именем ToolsVersion. В следующем примере демонстрируется применение этого параметра.
Создайте файл с именем projectA.proj и добавьте в него следующий код:
<Project> <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> <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=12.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, если таковой имеется.Если задана переменная среды
MSBUILDTREATALLTOOLSVERSIONSASCURRENT, используйте текущий параметрToolsVersion.Если задана переменная среды
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENTи в файле проекта определен параметрToolsVersionбольший, чем текущий параметрToolsVersion, используйте текущий параметрToolsVersion.Если задана переменная среды
MSBUILDLEGACYDEFAULTTOOLSVERSIONили если не задан параметрToolsVersion, используются следующие действия.Атрибут
ToolsVersionэлемента Project в файле проекта. Если этот атрибут не существует, предполагается, что используется текущая версия.Версия набора инструментов, заданная по умолчанию в файле MSBuild.exe.config.
Версия набора инструментов, заданная по умолчанию в реестре. Дополнительные сведения см. в статье Стандартные и настраиваемые конфигурации наборов инструментов.
Если переменная среды
MSBUILDLEGACYDEFAULTTOOLSVERSIONне задана, используются следующие действия.Если переменная среды
MSBUILDDEFAULTTOOLSVERSIONзадана равной существующему параметруToolsVersion, используйте ее.Если свойство
DefaultOverrideToolsVersionзадано в MSBuild.exe.config, используйте его.Если в реестре задано свойство
DefaultOverrideToolsVersion, используйте его.В противном случае используйте текущий параметр
ToolsVersion.