Общие элементы проектов 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 в качестве заполнителя для пустой папки. Когда папка заполняется, она заменяется другим элементом.