Общие свойства проектов MSBuild

В следующей таблице перечислены часто используемые свойства, определяемые в файлах проектов Visual Studio или включаемые в TARGETS-файлы, предоставляемые MSBuild.

Файлы проектов в Visual Studio (с расширением .csproj, .vbproj, .vcxproj и др.) содержат XML-код MSBuild, который выполняется при сборке проекта с помощью интегрированной среды разработки. Обычно проекты импортируют один или несколько TARGETS-файлов для определения своего процесса сборки. Дополнительные сведения см. в разделе TARGETS-файлы MSBuild.

При задании значений свойств следует помнить, что общие свойства могут быть заданы, сброшены или использованы в ряде импортированных файлов. Поэтому важно, когда вы задали свойство в файле проекта, в Directory.Build.props или в другом импортированном файле. Если вы задаете свойство где-то и не получаете ожидаемый результат, подумайте, где и как оно изменяется или используется во всех файлах, импортируемых проектом, включая импорты, которые добавляются неявно при использовании атрибута Sdk . См . статьи Directory.Build.props и Directory.Build.targets. Предварительная обработка может помочь в этом (см. параметр командной /preprocess строки или /pp в справочнике по командной строке MSBuild).

Список общих свойств и параметров

Имя свойства или параметра Типы проектов Описание
AdditionalLibPaths .NET Задает дополнительные папки, в которых компиляторы должны искать ссылочные сборки.
AddModules .NET Заставляет компилятор сделать все сведения о типах из указанных файлов доступными для компилируемого проекта. Это свойство эквивалентно переключателю /addModules компилятора.
ALToolPath .NET Путь к AL.exe. Это свойство переопределяет текущую версию AL.exe, позволяя использовать другую версию.
ApplicationIcon .NET .ico-файл значка, передаваемый компилятору для внедрения в качестве значка Win32. Это свойство эквивалентно переключателю /win32icon компилятора.
ApplicationManifest Все Задает путь к файлу, используемому для создания информации внешнего манифеста контроля учетных записей (UAC). Применяется только к проектам Visual Studio, нацеленным на Windows Vista.

В большинстве случаев манифест является внедренным. Однако при использовании COM-компонентов без регистрации или развертывания ClickOnce, манифест может представлять собой внешний файл, устанавливаемый вместе со сборками приложения. Дополнительные сведения см. в описании свойства NoWin32Manifest этой статьи.
AssemblyOriginatorKeyFile .NET Указывает файл, используемый для подписи сборки (.snk или .pfx), который передается задаче ResolveKeySource для создания фактического ключа, используемого для подписи сборки.
AssemblySearchPaths .NET Список расположений, где будет выполняться поиск при разрешении ссылок на сборки во время сборки. Порядок, в котором пути отображаются в этом списке, имеет смысл, так как пути, перечисленные ранее, имеют приоритет над более поздними записями.
AssemblyName .NET Имя окончательной выходной сборки после сборки проекта.
Имя свойства или параметра Типы проектов Описание
BaseAddress .NET Задает базовый адрес главной выходной сборки. Это свойство эквивалентно переключателю /baseaddress компилятора.
BaseIntermediateOutputPath Все Папка верхнего уровня, в которой создаются все промежуточные выходные папки, зависящие от конфигурации. Значение по умолчанию — obj\. Примером является следующий код: <BaseIntermediateOutputPath>c:\xyz\obj\</BaseIntermediateOutputPath>.
BaseOutputPath Все Задает базовый путь для выходного файла. Если он задан, MSBuild использует .OutputPath = $(BaseOutputPath)\$(Configuration)\ Пример синтаксиса:<BaseOutputPath>c:\xyz\bin\</BaseOutputPath>.
BuildInParallel Все Логическое значение, указывающее, выполняется ли сборка или удаление ссылок параллельно при использовании MSBuild в мультипроцессорном режиме. Значение по умолчанию — true; это означает, что сборка проектов будет выполняться параллельно, если система имеет несколько ядер или процессоров.
BuildProjectReferences Все Логическое значение, указывающее, выполняется ли сборка ссылок с помощью MSBuild. Автоматически задайте значение , false если вы создаете проект в интегрированной среде разработки (IDE) Visual Studio, true если нет. Значение -p:BuildProjectReferences=false можно указать в командной строке, чтобы избежать проверки актуальности проектов, на которые оно ссылается.
Имя свойства или параметра Типы проектов Описание
CleanFile Все Имя файла, который будет использоваться в качестве "средства очистки кэша". Средство очистки кэша — это список созданных файлов, которые необходимо удалить во время выполнения операции очистки. Процесс сборки помещает этот файл в промежуточную выходную папку.

Это свойство указывает только имена файлов, у которых нет сведений о пути.
CodePage .NET Задает кодовую страницу, используемую для всех файлов исходного кода при компиляции. Это свойство эквивалентно переключателю /codepage компилятора.
CompilerResponseFile .NET Необязательный файл ответа, который можно передавать задачам компилятора.
Параметр Configuration Все Конфигурация, которую вы создаете, как правило Debug , или Release, но настраиваемая на уровне решения и проекта.
CscToolPath C# Путь к csc.exe, компилятор C#.
CustomAfterMicrosoftCommonTargets Все Имя файла проекта или целевого файла, который должен быть импортирован автоматически после импорта общих целевых объектов.
CustomBeforeMicrosoftCommonTargets Все Имя файла проекта или файла целей, автоматически импортируемого перед импортом общих целей.
Имя свойства или параметра Типы проектов Описание
DebugSymbols Все Логическое значение, указывающее, создает ли сборка символы.

При запуске команды -p:DebugSymbols=false в командной строке отключается создание файлов с символами для базы данных программы (PDB).
DebugType Все Задает уровень создаваемой отладочной информации. Допустимые значения: full, pdbonly, portable, embedded и none.
DefineConstants .NET Задает константы условной компиляции. Пары "символ-значение" разделяются точкой с запятой и указываются с помощью синтаксиса, зависяющего от языка:

В C#: symbol1; symbol2

Visual Basic: symbol1 = value1, symbol2 = value2

Это свойство эквивалентно переключателю /define компилятора.
DefineDebug Все Логическое значение, указывающее, требуется ли определять константу DEBUG.
DefineTrace Все Логическое значение, указывающее, требуется ли определять константу TRACE.
DelaySign .NET Логическое значение, указывающее, требуется ли отложить подпись сборки или полностью подписать сборку.
Детерминированный .NET Логическое значение, указывающее, должен ли компилятор создавать идентичные сборки для идентичных входных данных. Этот параметр соответствует параметру /deterministic компиляторов.
DirectoryBuildPropsPath Все Указывает путь к файлу Directory.Build.props ; Если этот параметр определен, это свойство переопределяет алгоритм поиска по умолчанию. Дополнительные сведения см. в статье Настройка сборки.
DirectoryBuildTargetsPath Все Указывает путь к файлу Directory.Build.targets ; Если этот параметр определен, это свойство переопределяет алгоритм поиска по умолчанию. Дополнительные сведения см. в статье Настройка сборки.
DisableFastUpToDateCheck Все Логическое значение, применимое только к Visual Studio. Диспетчер сборок Visual Studio использует процесс FastUpToDateCheck, чтобы определить, требуется ли пересобрать проект для сохранения его актуальности. Это позволяет получить результат быстрее, чем при использовании MSBuild. Задание для свойства DisableFastUpToDateCheck значения true позволяет обойти диспетчер сборок Visual Studio и принудить его использовать MSBuild для определения актуальности проекта.
DocumentationFile .NET Имя файла, создаваемого в качестве файла XML-документации. Это имя включает только имя файла и не содержит информации о пути.
Имя свойства или параметра Типы проектов Описание
ErrorReport .NET Указывает, как задача компилятора должна сообщать о внутренних ошибках компилятора. Допустимые значения: prompt, send и none. Это свойство эквивалентно параметру компилятора /errorreport.
ExcludeDeploymentUrl .NET Задача GenerateDeploymentManifest добавляет в манифест развертывания тег deploymentProvider, если файл проекта включает какой-либо из следующих элементов:

— UpdateUrl;
— InstallUrl;
— PublishUrl.

С помощью ExcludeDeploymentUrl, однако, можно запретить добавление тега deploymentProvider в манифест развертывания, даже если указан какой-либо из вышеперечисленных URL-адресов. Для этого добавьте в файл проекта следующее свойство:

<ExcludeDeploymentUrl>true</ExcludeDeploymentUrl>

Примечание: ExcludeDeploymentUrl не предоставляется в интегрированной среде разработки Visual Studio и может быть задана только путем редактирования файла проекта вручную. Установка этого свойства не влияет на публикацию в Visual Studio; то есть тег deploymentProvider по-прежнему будет добавлен к URL-адресу, указанному в PublishUrl.
FileAlignment .NET Задает выравнивание размеров выходного файла в байтах. Допустимые значения: 512, 1024, 2048, 4096, 8192. Это свойство эквивалентно переключателю /filealignment компилятора.
FrameworkPathOverride Visual Basic Задает расположение библиотек mscorlib.dll и microsoft.visualbasic.dll. Этот параметр эквивалентен переключателю /sdkpath компилятора vbc.exe.
GenerateDocumentation .NET Логический параметр, указывающий, создается ли при сборке документация. Если он имеет значение true, в процессе сборки создается информация документации и помещается в XML-файл вместе с именем исполняемого файла или библиотеки, созданных задачей сборки.
GenerateFullPaths C# Создайте полные пути для имен файлов в выходных данных с помощью параметра компилятора -fullpaths.
GenerateSerializationAssemblies .NET Указывает, нужно ли создавать сборки XML-сериализации с помощью SGen.exe; свойство может быть включено, отключено и поставлено на автоматический режим. Это свойство используется для сборок, предназначенных только для .NET Framework. Для создания сборок XML-сериализации для сборок .NET Standard или .NET Core сошлитесь на пакет NuGet Microsoft.XmlSerializer.Generator.
Имя свойства или параметра Типы проектов Описание
ImportDirectoryBuildProps Все Логическое значение, указывающее, следует ли импортировать файл Directory.Build.props . Дополнительные сведения см. в статье Настройка сборки.
ImportDirectoryBuildTargets Все Логическое значение, указывающее, следует ли импортировать файл Directory.Build.targets . Дополнительные сведения см. в статье Настройка сборки.
IntermediateOutputPath Все Полный путь к промежуточной выходной папке, производный от BaseIntermediateOutputPath, если путь не указан. Например, obj\debug\.
KeyContainerName Все Имя контейнера ключа строгого имени.
KeyOriginatorFile Все Имя файла ключа строгого имени.
ModuleAssemblyName .NET Имя сборки, в которую должен быть включен скомпилированный модуль. Это свойство эквивалентно переключателю /moduleassemblyname компилятора.
MSBuildProjectExtensionsPath Все Указывает путь к расположению расширений проекта. По умолчанию принимает то же значение, что и BaseIntermediateOutputPath.
MSBuildTreatWarningsAsErrors All Логическое значение, предписывающее MSBuild обрабатывать все предупреждения как ошибки, если они не подавляются.
MSBuildWarningsAsErrors All Задает список кодов предупреждений, которые следует обрабатывать как ошибки. Предупреждения нужно разделять точкой с запятой. Если вы используете свойство WarningsAsErrorsпакета SDK для .NET , MSBuildWarningsAsErrors по умолчанию используется значение WarningsAsErrors.
MSBuildWarningsAsMessages All Задает список кодов предупреждений для подавления, рассматривая их как сообщения с низкой степенью важности. Предупреждения нужно разделять точкой с запятой. Обратите внимание, что некоторые предупреждения, создаваемые MSBuild, не могут быть подавлены с помощью этого свойства. Чтобы отключить их, используйте параметр -warnAsMessageкомандной строки . Если вы используете свойство NoWarnпакета SDK для .NET , MSBuildWarningsAsMessages по умолчанию используется значение NoWarn.
Имя свойства или параметра Типы проектов Описание
NoLogo Все Логическое значение, указывающее, требуется ли отключить эмблему компилятора. Это свойство эквивалентно переключателю /nologo компилятора.
NoStdLib .NET Логическое значение, указывающее, следует ли избегать ссылок на стандартную библиотеку (mscorlib.dll). Значение по умолчанию — false.
NoVBRuntimeReference Visual Basic Логическое значение, указывающее, следует ли включить в проект в качестве ссылки среду выполнения Visual Basic (Microsoft.VisualBasic.dll).
NoWarn .NET Подавляет указанные предупреждения. Указывать необходимо только числовую часть идентификатора предупреждения. При указании нескольких предупреждений они отделяются друг от друга точкой с запятой. Этот параметр соответствует параметру /nowarn компиляторов.
NoWin32Manifest .NET Логическое значение, указывающее, внедряется ли в исполняемый файл приложения информация манифеста контроля учетных записей (UAC). Применяется только к проектам Visual Studio, нацеленным на Windows Vista. В проектах, развертываемых с помощью ClickOnce и COM-компонентов без регистрации, этот элемент игнорируется. Значение False (используется по умолчанию) указывает, что информация манифеста UAC внедряется в исполняемый файл приложения. Значение True указывает, что информация манифеста UAC не внедряется.

Это свойство применяется только к проектам Visual Studio, нацеленным на Windows Vista. В проектах, развертываемых с помощью ClickOnce и COM-компонентов без регистрации, это свойство игнорируется.

NoWin32Manifest следует добавлять только в том случае, если вы не хотите, чтобы Visual Studio внедряла сведения о манифесте в исполняемый файл приложения; этот процесс называется виртуализацией. Для использования виртуализации задайте <ApplicationManifest> вместе с <NoWin32Manifest> следующим образом:

— Для проектов Visual Basic удалите узел <ApplicationManifest>. (В проектах Visual Basic <NoWin32Manifest> игнорируется, если существует узел <ApplicationManifest>.)
— Для проектов C# установите для параметра <ApplicationManifest> значение False, а для параметра <NoWin32Manifest> — значение True. (В проектах C# <ApplicationManifest> переопределяет <NoWin32Manifest>.)
Это свойство эквивалентно переключателю /nowin32manifest компилятора vbc.exe.
Optimize .NET Логическое значение, которое, будучи установленным в true, разрешает оптимизации компилятора. Это свойство эквивалентно переключателю /optimize компилятора.
OptionCompare VisualBasic Задает способ сравнения строк. Допустимые значения: binary или text. Это свойство эквивалентно параметру /optioncompare компилятора vbc.exe.
OptionExplicit Visual Basic Логическое значение, которое, будучи установленным в true, требует явного объявления переменных в исходном коде. Это свойство эквивалентно переключателю /optionexplicit компилятора.
OptionInfer Visual Basic Логическое значение, которое, будучи установленным в true, разрешает вывод типа переменных. Это свойство эквивалентно переключателю /optioninfer компилятора.
OptionStrict Visual Basic Логическое значение, которое, будучи установленным в true, дает задаче сборки указание требовать строгой семантики для ограничения неявного преобразования типов. Это свойство эквивалентно переключателю /optionstrict компилятора vbc.exe.
OutDir Все Указывает конечное расположение выходных данных для проекта или решения. При создании решения OutDir можно использовать для сбора несколько выходных данных проекта в одном расположении. Кроме того, OutDir входит в AssemblySearchPaths, используемый для разрешения ссылок. Например, bin\Debug.
OutputPath Все Указывает путь к выходному каталогу относительно каталога проекта, например bin\Debug или bin\Debug\$(Platform) в сборках, отличных от AnyCPU.
OutputType Все Задает формат выходного файла. Этот параметр может принимать одно из следующих значений:

— Library. Создание библиотеки кода. (Значение по умолчанию.)
— Exe. Создание консольного приложения.
— Module. Создание модуля.
— Winexe. Создание программы для Windows.

В C# и Visual Basic это свойство эквивалентно параметру /target. Тип выходных данных можно автоматически переопределить с помощью вывода. См. Типу OutputType задано значение WinExe для приложений WPF и WinForms. Чтобы отключить вывод, задайте DisableWinExeOutputInference значение true.
OverwriteReadOnlyFiles Все Логическое значение, указывающее, может ли сборка перезаписывать файлы, доступные только на чтение, или должна выдавать ошибку.
Имя свойства или параметра Типы проектов Описание
PathMap .NET Определяет способ сопоставления физических путей и выходных имен исходных путей компилятором. Это свойство эквивалентно параметру /pathmap компиляторов.
PdbFile .NET Имя создаваемого PDB-файла . Это свойство эквивалентно переключателю /pdb компилятора csc.exe.
Платформа Все Операционная система, для которую вы создаете. Примеры для сборок .NET Framework: Any CPU, x86 и x64.
ProcessorArchitecture .NET Архитектура процессора, используемая при разрешении ссылок на сборки. Допустимые значения: "msil", "x86", "amd64" и "ia64".
ProduceOnlyReferenceAssembly .NET Логическое значение, которое указывает компилятору производить только базовую сборку, а не скомпилированный код. Не может использоваться в сочетании с ProduceReferenceAssembly. Это свойство соответствует переключателю /refonly компиляторов vbc.exe и csc.exe.
ProduceReferenceAssembly .NET Логическое значение, которое при задании true включает создание ссылочных сборок для текущей сборки. При использовании этой функции Deterministic должно иметь значение true. Это свойство соответствует переключателю /refout компиляторов vbc.exe и csc.exe.
RemoveIntegerChecks Visual Basic Логическое значение, указывающее, включены ли проверки ошибок переполнения для целых чисел. Значение по умолчанию — false. Это свойство эквивалентно переключателю /removeintchecks компилятора vbc.exe.
RootNamespace Все Корневое пространство имен, используемое при присвоении имени внедренному ресурсу. Это пространство имен является частью имени манифеста внедренного ресурса.
Имя свойства или параметра Типы проектов Описание
Satellite_AlgorithmId .NET Идентификатор хэш-алгоритма AL.exe, используемого при создании вспомогательных сборок.
Satellite_BaseAddress .NET Базовый адрес, используемый при создании с помощью цели CreateSatelliteAssemblies вспомогательных сборок, относящихся к конкретному языку и региональным параметрам.
Satellite_CompanyName .NET Имя компании для передачи в AL.exe во время создания вспомогательных сборок.
Satellite_Configuration .NET Имя конфигурации для передачи в AL.exe во время создания вспомогательных сборок.
Satellite_Description .NET Текст описания для передачи в AL.exe во время создания вспомогательных сборок.
Satellite_EvidenceFile .NET Внедряет указанный файл во вспомогательную сборку с именем ресурса "Security.Evidence".
Satellite_FileVersion .NET Задает строковое значение для поля File Version во вспомогательной сборке.
Satellite_Flags .NET Задает значение поля Flags во вспомогательной сборке.
Satellite_GenerateFullPaths .NET Дает задаче сборки указание использовать абсолютные пути для всех файлов, упоминаемых в сообщениях об ошибке.
Satellite_LinkResource .NET Связывает указанные файлы ресурсов со вспомогательной сборкой.
Satellite_MainEntryPoint .NET Задает полное имя (т. е. "класс.метод") метода, используемого в качестве точки входа при преобразовании модуля в исполняемый файл во время создания вспомогательной сборки.
Satellite_ProductName .NET Задает строковое значение для поля Product во вспомогательной сборке.
Satellite_ProductVersion .NET Задает строковое значение для поля ProductVersion во вспомогательной сборке.
Satellite_TargetType .NET Задает формат выходного файла вспомогательной сборки: library, exe или win. Значение по умолчанию — library.
Satellite_Title .NET Задает строковое значение для поля "Title" во вспомогательной сборке.
Satellite_Trademark .NET Задает строковое значение для поля "Trademark" во вспомогательной сборке.
Satellite_Version .NET Задает информацию о версии для вспомогательной сборки.
Satellite_Win32Icon .NET Вставляет во вспомогательную сборку ICO-файл значка.
Satellite_Win32Resource .NET Вставляет во вспомогательную сборку ресурс Win32 (RES-файл).
SGenToolPath .NET Необязательный путь, указывающий расположение, откуда можно получить SGen.exe при переопределении текущей версии SGen.exe.
Имя свойства или параметра Типы проектов Описание
SGenUseProxyTypes .NET Логическое значение, указывающее, следует ли создавать прокси-типы с помощью SGen.exe. Это применяется, только если включено свойство GenerateSerializationAssemblies.

Цель SGen использует это свойство для установки флага UseProxyTypes. Это свойство по умолчанию имеет значение true, и для изменения этого свойства нет пользовательского интерфейса. Чтобы создать сборку сериализации для типов, не относящихся к веб-службам, добавьте это свойство в файл проекта и присвойте ему значение false, прежде чем импортировать Microsoft.Common.Targets или C#/VB.targets.
SkipInvalidConfigurations Все Если trueзадано значение , создайте предупреждение о недопустимых сочетаниях платформы и конфигурации, но не сбой сборки; если false или не определено (по умолчанию), создайте ошибку.
StartupObject .NET Задает класс или модуль, содержащий метод Main или процедуру Sub Main. Это свойство эквивалентно переключателю /main компилятора.
SubsystemVersion .NET Задает минимальную версию подсистемы, которую может использовать созданный исполняемый файл. Это свойство эквивалентно переключателю /subsystemversion компилятора. Сведения о значении по умолчанию этого свойства см. в описании /subsystemversion (Visual Basic) или /subsystemversion (параметры компилятора C#).
TargetCompactFramework .NET Версия .NET Compact Framework, необходимая для запуска приложения, которое вы создаете. Задание этого свойства позволяет ссылаться на определенные сборки платформы, которые иначе могут быть недоступны.
TargetFrameworkVersion .NET Версия платформа .NET Framework, необходимая для запуска приложения, которое вы создаете. Задание этого свойства позволяет ссылаться на определенные сборки платформы, которые иначе могут быть недоступны.
TreatWarningsAsErrors .NET Логический параметр, который, будучи установлен в значение true, дает указание обрабатывать все предупреждения как ошибки. Этот параметр эквивалентен переключателю компилятора /nowarn.
UseCommonOutputDirectory .NET Логическое свойство, которому можно присвоить значение true, если все выходные данные сборки в решении должны использовать один и тот же выходной каталог. При trueзначении выходные данные указанных проектов не копируются в проекты, использующие эти зависимости, как обычно, если этот параметр имеет значение false. Если задать для этого параметра true значение , фактический выходной каталог проектов не изменится. По-прежнему необходимо задать в выходном каталоге нужный общий выходной каталог для каждого проекта, которому это требуется.
UseHostCompilerIfAvailable .NET Логический параметр, который, если true, заставляет задачу сборки использовать внутрипроцессный объект компилятора, если он доступен. Этот параметр используется только Visual Studio.
Utf8Output .NET Логический параметр, который, будучи установлен в значение true, ведет журнал выходных данных компилятора в кодировке UTF-8. Этот параметр эквивалентен переключателю компилятора /utf8Output.
Имя свойства или параметра Типы проектов Описание
VbcToolPath Visual Basic Необязательный путь, указывающий другое расположение vbc.exe при переопределении текущей версии vbc.exe.
VbcVerbosity Visual Basic Задает уровень детализации выходных данных компилятора Visual Basic. Допустимые значения: Quiet, Normal (значение по умолчанию) и Verbose.
VisualStudioVersion Все Задает версию Visual Studio, для выполнения в которой считается предназначенным этой проект. Если это свойство не указано, MSBuild задает для него значение по умолчанию {VisualStudioMajorVersion}.0, например, для всех версий Visual Studio 2022 оно будет составлять 17.0.

Это свойство используется в нескольких типах проектов для задания набора целей, используемых для сборки. Если ToolsVersion для проекта имеет значение 4.0 или выше, VisualStudioVersion используется для задания того, какое подмножество инструментов следует использовать. Дополнительные сведения см. в разделе Набор инструментов.
WarningsAsErrors .NET Задает список предупреждений, которые следует обрабатывать как ошибки. Этот параметр эквивалентен переключателю компилятора /warnaserror.
WarningLevel All Указывает уровень предупреждения, который необходимо передать компилятору для создаваемых им предупреждений. Этот параметр не влияет на предупреждения MSBuild, которые не имеют обозначений уровней. См.раздел Уровень предупреждений в документации по компилятору C# и раздел /W (уровень предупреждений) в документации по компилятору C++.
WarningsNotAsErrors .NET Указывает список предупреждений, которые не рассматриваются как ошибки. Этот параметр эквивалентен переключателю компилятора /warnaserror.
Win32Manifest .NET Имя файла манифеста, который необходимо внедрить в окончательную сборку. Этот параметр эквивалентен переключателю компилятора /win32Manifest.
Win32Resource .NET Имя файла ресурса Win32, который необходимо внедрить в окончательную сборку. Этот параметр эквивалентен переключателю компилятора /win32resource.

Свойства, относящиеся к проектам пакета SDK для .NET (такие как TargetFramework) описаны в статье Свойства платформы.

См. также