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


Зарезервированные и известные свойства MSBuild

MSBuild предоставляет набор предопределенных свойств, которые хранят сведения о файле проекта и двоичных файлах MSBuild. Эти свойства оцениваются таким же образом, как и другие свойства MSBuild. Например, чтобы использовать MSBuildProjectFile свойство, введите $(MSBuildProjectFile).

MSBuild использует значения в следующей таблице для предопределений зарезервированных и известных свойств. Зарезервированные свойства нельзя переопределить, и большинство известных свойств не следует переопределять, кроме расширенных сценариев.

Зарезервированные и известные свойства

В таблице в этом разделе показаны предопределенные свойства MSBuild. Пример столбца в таблице относится к следующему примеру файла проекта, который должен находиться C:\Source\Repos\ConsoleApp1\ConsoleApp1по адресу, и показывает пример значений, которые эти свойства имеют при доступе к файлу проекта, когда MSBuild вызывается без специальных параметров командной строки.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
</Project>
Недвижимость Зарезервировано или хорошо известно Description Example
FrameworkSDKRoot Известный Путь к корневой папке для средств .NET Framework. C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\
InnerBuildProperty Известный Указывает имя свойства, определяющее измерение многонацелевой сборки (применимо только в том случае, если текущая сборка является сборкой графа). TargetFramework
InnerBuildPropertyValues Известный Указывает имя свойства, которое содержит возможные значения для ( InnerBuildProperty применимо, только если текущая сборка является сборкой графа). TargetFrameworks
IsGraphBuild Известный True Значение , если это сборка графа; т. е -graphBuild . параметр действует. Этот параметр означает, что MSBuild создает и создает граф проекта. Создание графа включает определение ссылок на проекты для зависимостей форм. Создание графа включает попытку создания ссылок на проекты до проектов, которые ссылались на них, отличаясь от традиционного планирования MSBuild.
MSBuildAssemblyVersion Зарезервировано Версия сборок MSBuild, используемая для сборки проекта. 17.0
MSBuildBinPath Зарезервировано Абсолютный путь к папке, в которой находятся двоичные файлы MSBuild, которые сейчас используются (например, C:\Windows\Microsoft.Net\Framework\<versionNumber>). Это свойство полезно, если необходимо ссылаться на файлы в каталоге MSBuild.

Не включайте последнюю обратную косую черту этого свойства.
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
MSBuildDisableFeaturesFromVersion Зарезервировано Используется пакетами SDK MSBuild и Майкрософт для управления волнами изменений.
MSBuildExtensionsPath Известный Представлено в .NET Framework 4: нет разницы между значениями MSBuildExtensionsPath по умолчанию и MSBuildExtensionsPath32. Можно задать для переменной MSBUILDLEGACYEXTENSIONSPATH среды значение, отличное от NULL, чтобы включить поведение значения MSBuildExtensionsPath по умолчанию в более ранних версиях.

В .NET Framework 3.5 и более ранних версиях MSBuildExtensionsPath значение по умолчанию указывает путь к подпапке MSBuild в папке \Program Files\ или \Program Files (x86) в зависимости от битности текущего процесса. Например, для 32-разрядного процесса на 64-разрядном компьютере это свойство указывает на папку \Program Files (x86). Для 64-разрядного процесса на 64-разрядном компьютере это свойство указывает на папку \Program Files .

Не включайте последнюю обратную косую черту этого свойства.

Это удобное место для размещения пользовательских целевых файлов. Например, целевые файлы можно установить в \Program Files\MSBuild\MyFiles\Northwind.targets , а затем импортировать в файлы проекта с помощью этого XML-кода:

<Import Project="$(MSBuildExtensionsPath)\MyFiles\Northwind.targets"/>
C:\Program Files\Microsoft Visual Studio\2022\MSBuild
MSBuildExtensionsPath32 Известный Путь к подпапке MSBuild в папке \Program Files или \Program Files (x86). Путь всегда указывает на 32-разрядную папку \Program Files (x86) на 32-разрядном компьютере и \Program Files на 64-разрядном компьютере. См. также MSBuildExtensionsPath и MSBuildExtensionsPath64.

Не включайте последнюю обратную косую черту этого свойства.
C:\Program Files\Microsoft Visual Studio\2022\MSBuild
MSBuildExtensionsPath64 Известный Путь вложенной папки MSBuild в папке \Program Files . Для 64-разрядного компьютера этот путь всегда указывает на папку \Program Files . Для 32-разрядного компьютера этот путь пуст. См. также MSBuildExtensionsPath и MSBuildExtensionsPath32.

Не включайте последнюю обратную косую черту этого свойства.
C:\Program Files\MSBuild
MSBuildFileVersion Зарезервировано 4-й версии сборок MSBuild, используемых для сборки проекта. 17.4.0.46505
MSBuildFrameworkToolsPath Известный Путь к средствам .NET Framework, созданным в настоящее время msBuild, с косой чертой. C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
MSBuildFrameworkToolsPath32 Известный Путь к 32-разрядной версии средств .NET Framework для той же версии платформы, с помощью которая была создана в настоящее время с косой чертой. C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
MSBuildFrameworkToolsPath64 Известный Путь к 64-разрядной версии средств .NET Framework для той же версии платформы, с помощью которая была создана в настоящее время с косой чертой. C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\
MSBuildInteractive Зарезервировано true Значение , если MSBuild работает в интерактивном режиме, разрешая входные данные пользователей. Этот параметр управляется параметром командной -interactive строки. false
MSBuildLastTaskResult Зарезервировано true Значение , если предыдущая задача завершилась без ошибок (даже если были предупреждения), или false если предыдущая задача имела ошибки. Как правило, при возникновении ошибки в задаче это последнее, что происходит в этом проекте. Поэтому значение этого свойства никогда не falseвыполняется, за исключением следующих сценариев:

— Если ContinueOnError атрибут элемента Task (MSBuild) имеет значение WarnAndContinue (или true) или ErrorAndContinue.

— Если Target элемент OnError (MSBuild) имеется в качестве дочернего элемента.
true
MSBuildNodeCount Зарезервировано Максимальное количество параллельных процессов, используемых при сборке. Это значение, указанное для -maxcpucount в командной строке. Если вы указали -maxcpucount без указания значения, то MSBuildNodeCount указывает количество процессоров на компьютере. Дополнительные сведения см. в справочнике по командной строке и параллельной сборке нескольких проектов. 1
MSBuildOverrideTasksPath Известный Расположение для поиска .overridetasks файлов, которое можно использовать для предоставления пользовательских версий стандартных задач. См. задачи MSBuild.

Не включайте в путь последнюю обратную косую черту.
MSBuildProgramFiles32 Зарезервировано Расположение 32-разрядной папки программы; например , C:\Program Files (x86).

Не включайте последнюю обратную косую черту этого свойства.
C:\Program Files (x86)
MSBuildProjectDefaultTargets Зарезервировано Полный список целевых объектов, указанных в DefaultTargets атрибуте Project элемента. Например, следующий Project элемент имеет MSBuildDefaultTargets значение A;B;Cсвойства :

<Project DefaultTargets="A;B;C" >
Build
MSBuildProjectDirectory Зарезервировано Абсолютный путь к каталогу, где находится файл проекта, например C:\MyCompany\MyProduct.

Не включайте последнюю обратную косую черту этого свойства.
C:\Source\Repos\ConsoleApp1\ConsoleApp1
MSBuildProjectDirectoryNoRoot Зарезервировано Значение свойства, за исключением корневого MSBuildProjectDirectory диска.

Не включайте последнюю обратную косую черту этого свойства.
Source\Repos\ConsoleApp1\ConsoleApp1
MSBuildProjectExtension Зарезервировано Расширение имени файла проекта, включая период; например, .proj. .csproj
MSBuildProjectFile Зарезервировано Полное имя файла проекта, включая расширение имени файла; Например, MyApp.proj. ConsoleApp1.csproj
MSBuildProjectFullPath Зарезервировано Абсолютный путь и полное имя файла проекта, включая расширение имени файла; например , C:\MyCompany\MyProduct\MyApp.proj. c:\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj
MSBuildProjectName Зарезервировано Имя файла проекта без расширения имени файла; Например, MyApp. ConsoleApp1
MSBuildRuntimeType Зарезервировано Тип среды выполнения, выполняемой в настоящее время. Представлено в MSBuild 15. Значение может быть не определено (до MSBuild 15), Full указывающее, что MSBuild работает на классической платформе .NET Framework, указывая, что MSBuild работает в .NET Core (например, Core в dotnet build), или Mono указывает, что MSBuild работает в Mono. Full
MSBuildStartupDirectory Зарезервировано Абсолютный путь к папке, в которой вызывается MSBuild. Используя это свойство, вы можете создать все, что находится под определенной точкой в дереве проекта, не создавая <файлы dirs.proj> в каждом каталоге. Вместо этого у вас есть только один проект, например c:\traversal.proj, как показано ниже:

<Project ...> <ItemGroup> <ProjectFiles Include="$ (MSBuildStartupDirectory) **\*.csproj"/> </ItemGroup> <Target Name="build"> <MSBuild Projects="@(ProjectFiles)"/> </Target> </Project>

Чтобы создать в любом месте дерева, введите следующее:

msbuild c:\traversal.proj

Не включайте последнюю обратную косую черту этого свойства.
c:\Source\Repos\ConsoleApp1
MSBuildThisFile Зарезервировано Имя файла и часть MSBuildThisFileFullPathрасширения файла. ConsoleApp1.csproj
MSBuildThisFileDirectory Зарезервировано Часть MSBuildThisFileFullPathкаталога .

Включите последнюю обратную косую черту в путь.
c:\Source\Repos\ConsoleApp1\ConsoleApp1\
MSBuildThisFileDirectoryNoRoot Зарезервировано Часть каталога, за исключением корневого MSBuildThisFileFullPathдиска.

Включите последнюю обратную косую черту в путь.
Source\Repos\ConsoleApp1\ConsoleApp1\
MSBuildThisFileExtension Зарезервировано Часть MSBuildThisFileFullPathрасширения имени файла. .csproj
MSBuildThisFileFullPath Зарезервировано Абсолютный путь к файлу проекта или целевого объекта, который содержит запущенный целевой объект.

Совет. Можно указать относительный путь в целевом файле, который относится к целевому файлу, а не относительно исходного файла проекта.
c:\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj
MSBuildThisFileName Зарезервировано Часть MSBuildThisFileFullPathимени файла без расширения имени файла. ConsoleApp1
MSBuildToolsPath Зарезервировано Путь установки версии MSBuild, связанной со значением MSBuildToolsVersion.

Не включайте в путь последнюю обратную косую черту.

Это свойство нельзя переопределить.
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
MSBuildToolsPath32 Известный Путь установки 32-разрядной версии MSBuild, связанной со значением MSBuildToolsVersion.

Не включайте в путь последнюю обратную косую черту.

Это свойство нельзя переопределить.
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin
MSBuildToolsPath64 Известный Путь установки 64-разрядной версии MSBuild, связанной со значением MSBuildToolsVersion.

Не включайте в путь последнюю обратную косую черту.

Это свойство нельзя переопределить.
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
MSBuildToolsVersion Зарезервировано Версия набора инструментов MSBuild, используемого для сборки проекта.

Примечание. Набор инструментов MSBuild состоит из задач, целевых объектов и средств, используемых для создания приложения. Эти средства включают компиляторы, такие как csc.exe и vbc.exe. Дополнительные сведения см. в статьях Toolset (ToolsVersion) и Стандартные и настраиваемые конфигурации набора инструментов.
Current
MSBuildSDKsPath Известный Путь MSBuild используется для поиска пакетов SDK. C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Sdks
MSBuildSemanticVersion Зарезервировано Полная версия сборок MSBuild версии 2.0, используемая для сборки проекта. 17.4.0-preview-22465-05+6033e4c95
MSBuildUserExtensionsPath Известный Этот путь предоставляет расположение папки установки MSBuild. Его можно сбросить, чтобы предоставить локальные настройки для каждого пользователя. См. статью "Настройка локальной сборки".

Не включайте в путь последнюю обратную косую черту.
MSBuildVersion Зарезервировано Версия MSBuild, используемая для сборки проекта.

Это свойство нельзя переопределить, в противном случае возвращается сообщение MSB4004 - The 'MSBuildVersion' property is reserved, and can't be modified. об ошибке.
17.4.0
MSBuildWarningsAsErrors Известный Список кодов предупреждений для обработки как ошибок. MSB1234;MSB5678
MSBuildWarningsAsMessages Известный Список кодов предупреждений, которые следует рассматривать как сообщения. MSB1234;MSB5678
MSBuildWarningsNotAsErrors Известный Список кодов предупреждений, которые не должны быть повышены до ошибок, даже если -warnAsError параметр настроен для повышения всех других предупреждений до ошибок. Обратите внимание, что это не действует, если это не верно. MSB1234;MSB5678
OS Известный В Windows это наследуется от операционной системы узла. Возможные значения включают "Windows_NT" и "Unix"; можно задать для различных значений операционных систем, отличных от Windows.
RoslynTargetsPath Известный Путь к целевым объектам для компиляторов Roslyn. C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\Roslyn
SDK35ToolsPath Известный Путь к средствам .NET Framework 3.5.
SDK40ToolsPath Известный Путь к средствам .NET Framework 4.0. C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\
VsInstallRoot Известный Папка установки Visual Studio. C:\Program Files\Microsoft Visual Studio\2022
WindowsSDK80Path Известный Путь к пакету SDK для Windows 8.

Свойства, относящиеся к проектам C++

Следующие свойства представляют путь к файлам импорта MSBuild C++ ( например .props , файлам и .targets файлам) для различных версий средств сборки MSVC (toolset) и целевых операционных систем. Файлы в этих папках представляют инфраструктуру сборки C++ и необходимы для создания любого проекта C++ с помощью MSBuild.

Недвижимость Зарезервировано или хорошо известно Description Example
AndroidTargetsPath Известный Путь к файлам импорта MSBuild C++ для сборок Android. C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Microsoft\MDD\Android\V150\
iOSTargetsPath Известный Путь к файлам импорта MSBuild C++ для сборок iOS. C:\Program Files\Microsoft Visual Studio\2022\Preview\MSBuild\Microsoft\MDD\iOS\V150\
VCTargetsPath Известный Путь к файлам MSBuild C++, поддерживающим систему сборки C++. C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Microsoft\VC\v170\
VCTargetsPath10 Известный Путь к файлам MSBuild C++ с поддержкой набора инструментов Visual Studio 2010. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\
VCTargetsPath11 Известный Путь к файлам импорта MSBuild для набора инструментов Visual Studio 2012 (V110). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\
VCTargetsPath12 Известный Путь к файлам импорта MSBuild для набора инструментов Visual Studio 2013 (V120). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\
VCTargetsPath14 Известный Путь к файлам импорта MSBuild для набора инструментов Visual Studio 2015 (V140). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\

Имена, конфликтующие с элементами MSBuild

Помимо приведенных выше имен, соответствующих элементам языка MSBuild, нельзя использовать для определяемых пользователем свойств, элементов или метаданных элементов:

  • VisualStudioProject
  • Цель
  • PropertyGroup
  • Выходные данные
  • ItemGroup
  • UsingTask
  • ProjectExtensions
  • OnError
  • ImportGroup
  • ВЫБОР
  • Когда
  • Иначе

См. также