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

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

Файлы проектов в Visual Studio (с расширением .csproj, .vbproj, .vcxproj и др.) содержат XML-код MSBuild, который выполняется при сборке проекта с помощью интегрированной среды разработки. Обычно проекты импортируют один или несколько TARGETS-файлов для определения своего процесса сборки. Дополнительные сведения см. в разделе TARGETS-файлы 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. Если сборка проекта ведется в изолированной среде разработки (IDE) Visual Studio, автоматически задается значение false. В противном случае задайте значение true. Значение -p:BuildProjectReferences=false можно указать в командной строке, чтобы избежать проверки актуальности проектов, на которые оно ссылается.
CleanFile Все Имя файла, который будет использоваться в качестве "средства очистки кэша". Средство очистки кэша — это список созданных файлов, которые необходимо удалить во время выполнения операции очистки. Процесс сборки помещает этот файл в промежуточную выходную папку.

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

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

symbol1 = value1 ; symbol2 = value2

Это свойство эквивалентно переключателю /define компилятора.
DefineDebug Все Логическое значение, указывающее, требуется ли определять константу DEBUG.
DefineTrace Все Логическое значение, указывающее, требуется ли определять константу TRACE.
DelaySign .NET Логическое значение, указывающее, требуется ли отложить подпись сборки или полностью подписать сборку.
Детерминированный .NET Логическое значение, указывающее, должен ли компилятор создавать идентичные сборки для идентичных входных данных. Этот параметр соответствует параметру /deterministic компиляторов.
DisableFastUpToDateCheck Все Логическое значение, применимое только к Visual Studio. Диспетчер сборок Visual Studio использует процесс FastUpToDateCheck, чтобы определить, требуется ли пересобрать проект для сохранения его актуальности. Это позволяет получить результат быстрее, чем при использовании MSBuild. Задание для свойства DisableFastUpToDateCheck значения true позволяет обойти диспетчер сборок Visual Studio и принудить его использовать MSBuild для определения актуальности проекта.
DocumentationFile .NET Имя файла, создаваемого в качестве файла XML-документации. Это имя включает только имя файла и не содержит информации о пути.
ErrorReport .NET Указывает, как задача компилятора должна сообщать о внутренних ошибках компилятора. Допустимые значения: "prompt", "send" и "none". Это свойство эквивалентно переключателю /errorreport компилятора.
ExcludeDeploymentUrl .NET Задача GenerateDeploymentManifest Task добавляет в манифест развертывания тег 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.
IntermediateOutputPath Все Полный путь к промежуточной выходной папке, производный от BaseIntermediateOutputPath, если путь не указан. Например, \obj\debug\ .
KeyContainerName Все Имя контейнера ключа строгого имени.
KeyOriginatorFile Все Имя файла ключа строгого имени.
ModuleAssemblyName .NET Имя сборки, в которую должен быть включен скомпилированный модуль. Это свойство эквивалентно переключателю /moduleassemblyname компилятора.
MSBuildProjectExtensionsPath Все Указывает путь к расположению расширений проекта. По умолчанию принимает то же значение, что и BaseIntermediateOutputPath.
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.
OutputType Все Задает формат выходного файла. Этот параметр может принимать одно из следующих значений:

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

В C# и Visual Basic это свойство эквивалентно параметру /target.
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.
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 присваивает ему разумное значение по умолчанию.

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

См. также