Общие элементы проектов MSBuild

В MSBuild элемент представляет собой именованную ссылку на один или несколько файлов. Элементы содержат метаданные, такие как имена файлов, пути и номера версий. Все типы проектов в Visual Studio имеют по несколько общих элементов. Эти элементы определены в файле Microsoft.Build.CommonTypes.xsd.

В этой статье перечислены все основные элементы проекта.

Справочные материалы

Представляет ссылку на сборку (управляемую) в проекте.

Имя метаданных элемента Description
УказаниеПути Необязательная строка. Относительный или абсолютный путь к сборке.
Имя. Необязательная строка. Отображаемое имя сборки, например "System.Windows.Forms".
FusionИмя Необязательная строка. Задает простое или строгое fusion-имя элемента.

Если этот атрибут присутствует, он может сэкономить время, так как файл сборки не должен быть открыт для получения имени fusion.
УказаннаяВерсия Необязательный логический атрибут. Указывает, дается ли ссылка только на версию в fusion-имени.
Aliases Необязательная строка. Любые псевдонимы для ссылки.
Private Необязательный логический атрибут. Указывает, будет ли ссылка скопирована в папку выходных данных. Этот атрибут соответствует свойству Копировать локально ссылки, находящейся в интегрированной среде разработки Visual Studio.

СсылкаНаCOM

Представляет ссылку на COM-компонент (неуправляемый) в проекте. Этот элемент доступен только для проектов .NET.

Имя метаданных элемента Description
Имя. Необязательная строка. Отображаемое имя компонента.
GUID Обязательная строка. Идентификатор GUID для компонента в формате {12345678-1234-1234-1234-123456781234}.
VersionMajor Обязательная строка. Основная часть номера версии компонента. Например "5", если полный номер версии — "5.46".
VersionMinor Обязательная строка. Вспомогательная часть номера версии компонента. Например "46", если полный номер версии — "5.46".
EmbedInteropTypes Необязательный логический атрибут. Если указано значение true, типы взаимодействия внедряются из этой ссылки непосредственно в сборку вместо создания библиотеки DLL взаимодействия.
Код языка Необязательная строка. Код языка для компонента.
ИнструментОбертки Необязательная строка. Имя инструмента для создания оболочки, используемое в компоненте. Значения:

1. primary
2. tlbimp
3. primaryortlbimp
4. aximp
Изоляция Необязательный логический атрибут. Указывает, является ли компонент компонентом, для которого не требуется регистрация.

СсылкаНаCOMФайл

Представляет список библиотек типов, которые передаются параметру TypeLibFiles целевого объекта ResolveComReference. Этот элемент доступен только для проектов .NET.

Имя метаданных элемента Description
ИнструментОбертки Необязательная строка. Имя инструмента для создания оболочки, используемое в компоненте. Значения:

1. primary
2. tlbimp
3. primaryortlbimp
4. aximp

СобственнаяСсылка

Представляет машинный файл манифеста или ссылку на такой файл.

Имя метаданных элемента Description
Имя. Обязательная строка. Базовое имя файла манифеста.
УказаниеПути Обязательная строка. Относительный путь к файлу манифеста.

ProjectReference

Представляет ссылку на другой проект. Элементы ProjectReference преобразуются в элементы Reference целевым объектом ResolveProjectReferences. Поэтому любые допустимые метаданные в элементе Reference могут быть допустимыми в ProjectReference, если они не были перезаписаны в процессе преобразования.

Имя метаданных элемента Description
Имя. Необязательная строка. Отображаемое имя ссылки.
GlobalPropertiesToRemove Необязательный string[]. Имена свойств, которые необходимо удалить при сборке проекта, на который указывает ссылка, например RuntimeIdentifier;PackOnBuild. Значение по умолчанию: empty.
Project Необязательная строка. Идентификатор GUID для ссылки в формате {12345678-1234-1234-1234-123456781234}.
OutputItemType Необязательная строка. Тип элемента, в который выводятся выходные данные целевого объекта. Значение по умолчанию — пусто. Если для метаданных ссылки задано значение true (по умолчанию), целевые выходные данные становятся ссылками для компилятора.
ReferenceOutputAssembly Необязательный логический атрибут. Если задано значение false, не включает выходные данные указанного проекта в качестве ссылки на этот проект, но все равно гарантирует, что другой проект выполняет сборку перед этим проектом. По умолчанию — true.
Private Необязательный логический атрибут. Указывает, будет ли ссылка скопирована в папку выходных данных. Этот атрибут соответствует свойству Копировать локально ссылки, находящейся в интегрированной среде разработки Visual Studio.
SetConfiguration Необязательная строка. Задает глобальное свойство Configuration для указанного проекта, например Configuration=Release.
SetPlatform Необязательная строка. Задает глобальное свойство Platform для указанного проекта, например Platform=AnyCPU.
SetTargetFramework Необязательная строка. Задает глобальное свойство TargetFramework для указанного проекта, например TargetFramework=netstandard2.0.
SkipGetTargetFrameworkProperties Необязательный логический атрибут. Если значение равно true, создает проект, на который указывает ссылка, без согласования наиболее совместимого значения TargetFramework. По умолчанию — false.
Целевые объекты Необязательный string[]. Разделенный точками с запятой список целевых объектов в проектах, на которые указывают ссылки, которые необходимо построить. По умолчанию используется значение $(ProjectReferenceBuildTargets), которое по умолчанию пусто, указывающее целевые объекты по умолчанию. При построении в Visual Studio (в отличие от MSBuild.exe нее dotnet build) это не препятствует созданию целевых объектов по умолчанию для указанного проекта Visual Studio.

Примечание.

Существует различие между ссылками на проекты между платформа .NET Framework и .NET Core (включая .NET 5 и более поздние версии). В платформа .NET Framework проектах ссылки на проекты не являются транзитивными. То есть, если Project1 ссылается на Project2 и Project2 ссылается на Project3, вы не можете код для Project3 из Project1. Однако в .NET Core (включая .NET 5 и более поздних версий), ссылки на проекты транзитивны . Вы можете код для Project3 в Project1.

Компиляция

Представляет исходные файлы для компилятора.

Имя метаданных элемента Description
ЗависимостьОт Необязательная строка. Указывает файл, от которого зависит этот файл, для правильной компиляции.
АвтоСоздание Необязательный логический атрибут. Указывает, был ли файл проекта создан интегрированной средой разработки (IDE) Visual Studio.
Установить связь Необязательная строка. Отображаемый путь к обозначениям, если файл физически расположен вне зоны влияния файла проекта.
Видимо Необязательный логический атрибут. Указывает, следует ли отображать файл в обозревателе решений в Visual Studio.
КопироватьВВыходнойКаталог Необязательная строка. Определяет, следует ли копировать файл в выходной каталог. Значения:

1. Never
2. Always
3. PreserveNewest

ВнедренныйРесурс

Представляет ресурсы для внедрения в созданную сборку.

Имя метаданных элемента Description
ЗависимостьОт Необязательная строка. Указывает файл, от которого зависит этот файл для правильной компиляции.
Генератор Необязательная строка. Имя любого генератора файлов, который запущен на этом элементе.
ПоследниеВыходныеДанныеГенератора Необязательная строка. Имя файла, который был создан любым генератором файлов, запущенным на этом элементе.
НастраиваемоеПространствоИменСредства Необязательная строка. Пространство имен, в котором любой генератор файлов, запущенный на этом элементе, должен создать код.
Установить связь Необязательная строка. Путь к обозначениям отображается в том случае, если файл физически расположен вне зоны влияния проекта.
Видимо Необязательный логический атрибут. Указывает, следует ли отображать файл в обозревателе решений в Visual Studio.
КопироватьВВыходнойКаталог Необязательная строка. Определяет, следует ли копировать файл в выходной каталог. Значения:

1. Never
2. Always
3. PreserveNewest
LogicalName Обязательная строка. Логическое имя внедренного ресурса.

Содержимое

Представляет файлы, которые не компилируются в проект, но могут быть внедрены или опубликованы вместе с ним.

Имя метаданных элемента Description
ЗависимостьОт Необязательная строка. Указывает файл, от которого зависит этот файл, для правильной компиляции.
Генератор Необязательная строка. Имя любого генератора файлов, который запущен на этом элементе.
ПоследниеВыходныеДанныеГенератора Необязательная строка. Имя файла, который был создан любым генератором файлов, запущенным на этом элементе.
НастраиваемоеПространствоИменСредства Необязательная строка. Пространство имен, в котором любой генератор файлов, запущенный на этом элементе, должен создать код.
Установить связь Необязательная строка. Путь к обозначениям, который отображается в том случае, если файл физически расположен вне зоны влияния проекта.
СостояниеПубликации Обязательная строка. Состояние публикации содержимого либо:

— Default
— Included
— Excluded
— DataFile
— Prerequisite
ЯвляетсяСборкой Необязательный логический атрибут. Указывает, является ли файл сборкой.
Видимо Необязательный логический атрибут. Указывает, следует ли отображать файл в обозревателе решений в Visual Studio.
КопироватьВВыходнойКаталог Необязательная строка. Определяет, следует ли копировать файл в выходной каталог. Значения:

1. Never
2. Always
3. PreserveNewest
TargetPath Необязательная строка. Выходной путь (относительно каталога выходных данных конфигурации и (или) конкретной платформы) элемента, включая имя файла. Это учитывает метаданные Link , если они указаны. Если TargetPath не предоставлен, он вычисляется во время процесса сборки. См. раздел AssignTargetPath.

нет

Представляет файлы, которые не должны иметь никакой роли в процессе создания.

Имя метаданных элемента Description
ЗависимостьОт Необязательная строка. Указывает файл, от которого зависит этот файл, для правильной компиляции.
Генератор Необязательная строка. Имя любого генератора файлов, который запущен на этом элементе.
ПоследниеВыходныеДанныеГенератора Необязательная строка. Имя файла, который был создан любым генератором файлов, запущенным на этом элементе.
НастраиваемоеПространствоИменСредства Необязательная строка. Пространство имен, в котором любой генератор файлов, запущенный на этом элементе, должен создать код.
Установить связь Необязательная строка. Путь к обозначениям, который отображается в том случае, если файл физически расположен вне зоны влияния проекта.
Видимо Необязательный логический атрибут. Указывает, следует ли отображать файл в обозревателе решений в Visual Studio.
КопироватьВВыходнойКаталог Необязательная строка. Определяет, следует ли копировать файл в выходной каталог. Значения:

1. Never
2. Always
3. PreserveNewest

AssemblyMetadata

Представляет атрибуты сборки, создаваемые как [AssemblyMetadata(key, value)].

Имя метаданных элемента Description
Включение Становится первым параметром (ключом) в конструкторе атрибута AssemblyMetadataAttribute.
Значение Обязательная строка. Становится вторым параметром (значением) в конструкторе атрибута AssemblyMetadataAttribute.

Примечание.

Этот элемент применяется к проектам, использующим пакет SDK для .NET 5 (и .NET Core) и более поздних версий.

InternalsVisibleTo

Указывает сборки для выдачи в виде атрибутов сборок [InternalsVisibleTo(..)].

Имя метаданных элемента Description
Включение Имя сборки.
Ключ Необязательная строка. Открытый ключ сборки.

Примечание.

Этот элемент применяется к проектам, использующим пакет SDK для .NET 5 (и .NET Core) и более поздних версий.

БазовыйМанифестПриложения

Представляет базовый манифест приложения для сборки и содержит сведения о безопасности развертывания ClickOnce.

ИмпортАнализаКода

Представляет проект FxCop для импорта.

Import

Представляет сборки, пространства имен которых должен импортировать компилятор Visual Basic.

Папка

Этот элемент используется только Visual Studio в качестве заполнителя для пустой папки. Когда папка заполняется, она заменяется другим элементом.

См. также