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


Создание элементов для iOS, Mac Catalyst, macOS и tvOS

Элементы сборки управляют созданием проектов приложений или библиотек .NET для iOS, Mac Catalyst, macOS и tvOS.

Дополнительные расширения приложений

Группа элементов, содержащая любые дополнительные расширения приложений для копирования в пакет приложений.

Можно задать следующие метаданные:

  • Укажите путь к директории сборки для проекта расширения приложения Xcode.
  • Название: название расширения.
  • BuildOutput: Это значение добавляется к значению Include, чтобы создать путь к пакету appex. Как правило, Xcode размещает сборки для симулятора и устройства в разных местах, поэтому это можно использовать для того, чтобы иметь одну AdditionalAppExtensions запись, указывающую на два разных appex пакета, в зависимости от того, ведется ли сборка для симулятора или устройства.
  • CodesignEntitlements: определяет права, которые следует использовать при подписи расширения приложения. Значение по умолчанию — "%(имя).разрешения" в каталоге сборки "Include" (если этот файл существует).
  • CodesignWarnIfNoEntitlements: будет выдано предупреждение, если значение CodesignEntitlements не установлено. Это свойство можно установить в false, чтобы отключить это предупреждение.

Пример:

<ItemGroup>
    <AdditionalAppExtensions Include="path/to/my.appex">
        <Name>MyAppExtensionName</Name>
        <BuildOutput Condition="'$(SdkIsSimulator)' == 'false'">DerivedData/MyAppExtensionName/Build/Products/Debug-iphoneos</BuildOutput>
        <BuildOutput Condition="'$(SdkIsSimulator)' == 'true'">DerivedData/MyAppExtensionName/Build/Products/Debug-iphonesimulator</BuildOutput>
        <CodesignEntitlements>path/to/Entitlements-appextension.plist</CodesignEntitlements>
        <CodesignWarnIfNoEntitlements>false</CodesignWarnIfNoEntitlements>
    </AdditionalAppExtensions>
</ItemGroup>

Пример решения можно найти здесь: TestApplication.

Альтернативная иконка приложения

Группу AlternateAppIcon элементов можно использовать для указания альтернативных значков приложения.

Метаданные Include должны указывать на имя файла .appiconset (для iOS, macOS и Mac Catalyst) или файла .imagestack (для tvOS) ресурса изображения в каталоге активов.

Пример:

<ItemGroup>
    <!-- The value to put in here for the "Resources/MyImages.xcassets/MyAlternateAppIcon.appiconset" resource would be "MyAlternateAppIcon" -->
    <AlternateAppIcon Include="MyAlternateAppIcon" />
</ItemGroup>

См. также:

AtlasTexture

Группа элементов, содержащая текстуры атласа.

BGenReferencePath

Список ссылок на сборки, которые нужно передать средству bgen(генератор привязки).

Обычно это обрабатывается автоматически путем добавления ссылок в виде элементов ProjectReference или PackageReference.

BundleResource

Файлы, скопированные в пакет приложений.

См. также:

CodesignBundle

Дополнительные пакеты, которые находятся в финальной версии приложения и должны быть подписаны.

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

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

Пример:

<ItemGroup>
    <CodesignBundle Include="$(AssemblyName).app/Contents/SharedSupport/MyCustomBundle.app" />
</ItemGroup>

Существует несколько элементов метаданных, которые можно задать в элементе CodesignBundle , чтобы указать способ подписывания:

Пример:

<ItemGroup>
    <CodesignBundle Include="$(AssemblyName).app/Contents/SharedSupport/MyCustomBundle.app">
        <CodesignEntitlements>path/to/Entitlements.plist</CodesignEntitlements>
    </CodesignBundle>
</ItemGroup>

Любые метаданные, не заданные, будут использовать соответствующее свойство (например, если CodesignSigningKey метаданные не заданы, вместо этого будет использоваться значение CodesignSigningKey свойства.)

Коллада

Группа элементов, содержащая ресурсы collada.

Содержимое

Ресурсы (файлы) для копирования в пакет приложений.

Они будут помещены в следующий каталог в пакете приложений:

  • /Resources: iOS и tvOS
  • /Contents/Resources: macOS и Mac Catalyst

Можно задать в метаданных путь Link относительно целевого каталога, чтобы изменить расположение в пакете приложений.

Пример:

<ItemGroup>
    <Content Include="Readme.txt" Link="Documentation/Readme.txt" />
</ItemGroup>

поместите файл в следующее расположение:

  • /Resources/Documentation/Readme.txt: iOS, tvOS
  • /Contents/Resources/Documentation/Readme.txt: macOS, Mac Catalyst

См. также:

CoreMLModel

Группа элементов, содержащая модели CoreML.

Настраиваемые права

Группа элементов, содержащая пользовательские права для добавления в приложение.

Эти права обрабатываются в последнюю очередь и перезаписывают любые другие права, либо из файла, указанного свойством CodesignEntitlements либо из используемого профиля предоставления (если таковые имеются).

Это формат:

<ItemGroup>
    <CustomEntitlements Include="name.of.entitlement" Type="Boolean" Value="true" /> <!-- value can be 'false' too (case doesn't matter) -->
    <CustomEntitlements Include="name.of.entitlement" Type="String" Value="stringvalue" />
    <CustomEntitlements Include="name.of.entitlement" Type="StringArray" Value="a;b" /> <!-- array of strings, separated by semicolon -->
    <CustomEntitlements Include="name.of.entitlement" Type="StringArray" Value="a😁b" ArraySeparator="😁" /> <!-- array of strings, separated by 😁 -->
    <CustomEntitlements Include="name.of.entitlement" Type="Remove" /> <!-- This will remove the corresponding entitlement  -->
</ItemGroup>

ITunesArtwork

Группа элементов, содержащая рисунки iTunes для IPAs.

Применимо только к проектам iOS и tvOS.

iTunesMetadata

Применимо только к проектам iOS и tvOS.

ImageAsset

Группа элементов, содержащая ресурсы изображений.

Определение интерфейса

Группа элементов, содержащая определения интерфейса (*.xib или *.storyboard files).

LinkDescription

Дополнительные XML-файлы для передачи в триммер.

Это то же самое, что и настройка TrimmerRootDescriptor.

КомпоновщикАргумент

Дополнительные аргументы для передачи в нативный компоновщик (ld) при компиляции основного исполняемого файла расширения приложения или приложения.

Пример 1 (для связи с платформой AudioToolbox ):

<ItemGroup>
    <LinkerArgument Include="-framework" />
    <LinkerArgument Include="AudioToolbox" />
</ItemGroup>

Пример 2 (для связывания с пользовательской статической библиотекой):

<ItemGroup>
    <LinkerArgument Include="$(MSBuildProjectDirectory)/libCustom.a" />
</ItemGroup>

Каждый аргумент линкера является отдельным LinkerArgument, а аргументы не должны быть заключены в кавычки.

Все аргументы будут переданы нативному компоновщику в том порядке, в котором они добавляются в группу элементов LinkerArgument, но точное местоположение среди всех аргументов, передаваемых компоновщику, не задано.

Собственный исполняемый файл будет перестроен автоматически, если изменения в наборе LinkerArgument происходят между сборками, но если LinkerArgument указывает на файл (например, статическую библиотеку), и этот файл изменяется, это изменение не будет обнаружено, и собственный исполняемый файл не будет перестроен автоматически.

Металл

Группа элементов, содержащая металлические активы.

ДополнительныеАргументыЗапуска

Группа элементов, содержащая дополнительные аргументы для инструмента mlaunch, который используется для запуска приложений на устройстве и в симуляторе. Средство mlaunch считается внутренним инструментом, и поведение может измениться в любое время.

Замечание

Это применяется только при запуске приложения из командной строки (dotnet run или dotnet build -t:Run), а не при запуске из интегрированной среды разработки.

MlaunchEnvironmentVariables

Группа элементов, содержащая переменные среды, которые будут заданы при запуске приложения на устройстве или в симуляторе.

Замечание

Это применяется только при запуске приложения из командной строки (dotnet run или dotnet build -t:Run), а не при запуске из интегрированной среды разработки.

NativeReference

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

ObjcBindingApiDefinition

Группа элементов, которая содержит все определения API для проектов привязки.

ObjcBindingCoreSource

Группа элементов, которая перечисляет весь исходный код для проектов привязки.

ObjCBindingNativeFramework

Группа элементов, которая перечисляет все нативные фреймворки, которые должны быть включены в проект связывания.

Эта группа элементов устарела, используйте NativeReference вместо неё.

ObjcBindingNativeLibrary

Группа элементов, которая перечисляет все собственные библиотеки, которые должны быть включены в проект привязки.

Эта группа элементов устарела, используйте NativeReference вместо неё.

ЧастичныйМанифестПриложения

PartialAppManifest можно использовать для добавления дополнительных частичных манифестов приложений, которые будут объединены с основным манифестом приложения (Info.plist).

Все значения в частичных манифестах приложений переопределяют значения в основном манифесте приложения, если метаданные Overwrite не установлены на false.

Если одно и то же значение указано в нескольких частичных манифестах приложения, оно не определено, какое из них будет использоваться.

<ItemGroup>
    <PartialAppManifest Include="my-partial-manifest.plist" Overwrite="false" />
</ItemGroup>

Если разработчику нужно выполнить целевой объект для вычисления того, что нужно добавить в PartialAppManifest группу элементов, можно убедиться, что этот целевой объект выполняется до того, как PartialAppManifest элементы будут процесированы, добавив его в CollectAppManifestsDependsOn свойство:

<PropertyGroup>
    <CollectAppManifestsDependsOn>
        AddPartialAppManifests;
        $(CollectAppManifestsDependsOn);
    </CollectAppManifestsDependsOn>
</PropertyGroup>
<Target Name="AddPartialAppManifests">
    <ItemGroup>
        <PartialAppManifest Include="MyPartialAppManifest.plist" />
    </ItemGroup>
</Target>

SkipCodesignItems

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

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

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

Пример:

<ItemGroup>
    <SkipCodesignItems Include="Contents/SharedSupport/mysignedlibrary.dylib" />
</ItemGroup>

Применимо ко всем платформам.

XcodeProject

<XcodeProject> можно использовать для создания и использования выходных данных проектов платформЫ Xcode, созданных в Xcode или elsewehere.

Метаданные Include должны указывать на путь к созданному файлу XCODEPROJ.

<ItemGroup>
  <XcodeProject Include="path/to/MyProject.xcodeproj" SchemeName="MyLibrary" />
</ItemGroup>

Поддерживаются следующие метаданные MSBuild:

  • %(SchemeName): имя схемы сборки или целевого объекта, который должен использоваться для сборки проекта.

  • %(Configuration): имя конфигурации, используемой для сборки проекта. Значение по умолчанию — Release.

  • %(CreateNativeReference): выходные файлы XCFRAMEWORK будут добавлены в проект @(NativeReference) . Метаданные, поддерживаемые @(NativeReference), такие как %(Kind), %(Frameworks) или %(SmartLink), будут перенаправлены, если установлены. Значение по умолчанию — true.

  • %(OutputPath): может быть установлен для переопределения выходного пути XCARCHIVE и XCFRAMEWORK в проекте Xcode. Значение по умолчанию — $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Это действие сборки было введено в .NET 9.