Partager via


Éléments de build pour iOS, Mac Catalyst, macOS et tvOS

Les éléments de génération contrôlent la façon dont les projets d’application ou de bibliothèque .NET pour iOS, Mac Catalyst, macOS et tvOS sont générés.

AdditionalAppExtensions

Groupe d’éléments qui contient toutes les extensions d’application supplémentaires à copier dans le bundle d’applications.

Les métadonnées suivantes peuvent être définies :

  • Inclure : chemin d’accès au répertoire de build du projet d’extension d’application Xcode.
  • Nom : nom de l’extension.
  • BuildOutput : cette valeur est ajoutée à la valeur Include pour déterminer l’emplacement de l'appex bundle. En règle générale, Xcode place les builds de simulateur et d’appareil dans différents emplacements. Cela permet d’utiliser une seule entrée AdditionalAppExtensions pointant vers deux bundles appex différents, selon qu'il s'agit d'un build pour simulateur ou pour appareil.
  • CodesignEntitlements : spécifie les droits à utiliser lors de la signature de l’extension d’application. La valeur par défaut est '%(Name).entitlements' dans le répertoire de build « Include » (si ce fichier existe).
  • CodesignWarnIfNoEntitlements : un avertissement est généré si aucune valeur CodesignEntitlements n’est définie. Cette propriété peut être définie sur false pour désactiver cet avertissement.

Exemple:

<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>

Vous trouverez un exemple de solution ici : TestApplication.

AlternateAppIcon

Le AlternateAppIcon groupe d’éléments peut être utilisé pour spécifier d’autres icônes d’application.

Les Include métadonnées doivent pointer vers le nom de fichier d’une .appiconset ressource d’image (pour iOS, macOS et Mac Catalyst) ou .imagestack (pour tvOS) à l’intérieur d’un catalogue de ressources.

Exemple:

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

Voir aussi :

AtlasTexture

Groupe d’éléments qui contient des textures atlas.

BGenReferencePath

Liste des références d'assemblage à transmettre à l'outil bgen (générateur de liaison).

En règle générale, cela est géré automatiquement en ajoutant des références en tant qu’éléments ProjectReference ou PackageReference.

BundleResource

Fichiers à copier dans le bundle d’applications.

Voir aussi :

CodesignBundle

Des offres groupées supplémentaires à l’intérieur de l’application finale qui doivent être signées.

L'objectif est d'inclure dans la signature de l'application tous les autres bundles qui sont copiés manuellement (par exemple via des cibles MSBuild personnalisées pendant le processus de génération) dans le bundle de l'application.

Le chemin à inclure est le chemin vers le bundle d'application à signer à l'intérieur du bundle d'application principal, y compris le nom du bundle d'application lui-même.

Exemple:

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

Plusieurs éléments de métadonnées peuvent être définis sur l’élément CodesignBundle pour diriger la façon dont la signature se produit :

Exemple:

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

Les métadonnées non définies utilisent plutôt la propriété correspondante (par exemple si les métadonnées CodesignSigningKey ne sont pas définies, la valeur de la propriété CodesignSigningKey sera utilisée à la place.)

Collada

Groupe d’éléments qui contient des ressources collada.

Contenu

Ressources (fichiers) à copier dans le bundle d’applications.

Ils seront placés dans le répertoire suivant dans le bundle d’applications :

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

Il est possible de définir les métadonnées Link sur un chemin relatif au répertoire cible afin de modifier l'emplacement dans le bundle de l'application.

Exemple:

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

place le fichier à l’emplacement suivant :

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

Voir aussi :

CoreMLModel

Groupe d’éléments qui contient des modèles CoreML.

CustomEntitlements

Groupe d’éléments qui contient des droits personnalisés à ajouter à l’application.

Ces droits sont traités en dernier et remplacent les autres droits, soit à partir du fichier spécifié avec la propriété CodesignEntitlements , soit à partir du profil d’approvisionnement en cours d’utilisation (le cas échéant).

Il s’agit du format suivant :

<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

Groupe d’éléments qui contient des illustrations iTunes pour les fichiers IPA.

Applicable uniquement aux projets iOS et tvOS.

ITunesMetadata

Applicable uniquement aux projets iOS et tvOS.

ImageAsset

Groupe d’éléments qui contient des ressources d’image.

Définition de l'interface

Groupe d’éléments qui contient des définitions d’interface (fichiers *.xib ou *.storyboard).

LinkDescription

Fichiers XML supplémentaires à passer à l'outil de réduction.

Il s’agit de la même définition de TrimmerRootDescriptor.

LinkerArgument

Arguments supplémentaires à passer à l’éditeur de liens natif (ld) lors de la compilation du fichier exécutable principal pour une application ou une extension d’application.

Exemple 1 (pour établir un lien avec l’infrastructure AudioToolbox ) :

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

Exemple 2 (pour établir un lien avec une bibliothèque statique personnalisée) :

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

Chaque argument de l’éditeur de liens est un argument distinct LinkerArgumentet les arguments ne doivent pas être entre guillemets.

Tous les arguments sont passés à l’éditeur de liens natif dans l’ordre dans lequel ils sont ajoutés au LinkerArgument groupe d’éléments, mais l’emplacement exact dans tous les arguments passés à l’éditeur de liens natif n’est pas défini.

L’exécutable natif sera reconstruit automatiquement si l'ensemble des LinkerArgument change entre les builds, mais si un LinkerArgument pointe vers un fichier (par exemple, une bibliothèque statique) et que ce fichier change, cette modification ne sera pas détectée et l’exécutable natif ne sera pas reconstruit automatiquement.

Métal

Groupe d’éléments qui contient des ressources métalliques.

MlaunchAdditionalArguments

Groupe d’éléments qui contient des arguments supplémentaires pour l’outil mlaunch, utilisé pour lancer des applications sur l’appareil et dans le simulateur. L’outil mlaunch est considéré comme un outil interne, et le comportement peut changer à tout moment.

Remarque

Cela s’applique uniquement lors du lancement de l’application à partir de la ligne de commande (dotnet run ou ), et dotnet build -t:Runnon lors du lancement à partir de l’IDE.

MlaunchEnvironmentVariables

Groupe d’éléments qui contient des variables d’environnement qui seront définies lors du lancement de l’application, sur l’appareil ou dans le simulateur.

Remarque

Cela s’applique uniquement lors du lancement de l’application à partir de la ligne de commande (dotnet run ou ), et dotnet build -t:Runnon lors du lancement à partir de l’IDE.

NativeReference

Groupe d'éléments contenant toutes les références natives qui doivent être liées ou associées lors de la génération de l'exécutable natif.

ObjcBindingApiDefinition

Groupe d’éléments qui répertorie toutes les définitions d’API pour les projets de liaison.

ObjcBindingCoreSource

Groupe d’éléments qui répertorie tout le code source principal pour les projets de liaison.

ObjCBindingNativeFramework

Groupe d’éléments qui répertorie tous les frameworks natifs qui doivent être inclus dans un projet de liaison.

Ce groupe d’éléments est déconseillé, utilisez NativeReference à la place.

ObjcBindingNativeLibrary

Groupe d’éléments qui répertorie toutes les bibliothèques natives qui doivent être incluses dans un projet de liaison.

Ce groupe d’éléments est déconseillé, utilisez NativeReference à la place.

PartialAppManifest

PartialAppManifest peut être utilisé pour ajouter des manifestes d’application partiels supplémentaires qui seront fusionnés avec le manifeste d’application principal (Info.plist).

Toutes les valeurs dans les manifestes d'application partielle remplaceront celles du manifeste d'application principal, sauf si les métadonnées Overwrite sont définies sur false.

Si la même valeur est spécifiée dans plusieurs manifestes d’application partielle, il est indéterminé laquelle sera utilisée.

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

Si le développeur doit exécuter une cible pour calculer ce qu’il faut ajouter au PartialAppManifest groupe d’éléments, il est possible de s’assurer que cette cible est exécutée avant que les PartialAppManifest éléments soient traités en l’ajoutant à la CollectAppManifestsDependsOn propriété :

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

SkipCodesignItems

Groupe d’éléments qui spécifie des fichiers ou des répertoires dans le bundle d’applications qui ne doivent pas être signés.

L’objectif est d’exclure de la signature de fichiers et de répertoires copiés manuellement (par exemple via des cibles MSBuild personnalisées dans le fichier projet) dans le bundle d’applications, et qui sont déjà signés.

Le chemin d’accès à inclure est le chemin d’accès au fichier ou au répertoire par rapport à la racine du bundle d’applications.

Exemple:

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

Applicable à toutes les plateformes.

XcodeProject

<XcodeProject> peut être utilisé pour générer et consommer les sorties des projets d’infrastructure Xcode créés dans Xcode ou elsewehere.

Les Include métadonnées doivent pointer vers le chemin du fichier XCODEPROJ à générer.

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

Les métadonnées MSBuild suivantes sont prises en charge :

  • %(SchemeName): Le nom du schéma de compilation ou de la cible qui doit être utilisé pour compiler le projet.

  • %(Configuration): nom de la configuration à utiliser pour générer le projet. La valeur par défaut est Release.

  • %(CreateNativeReference) : Les fichiers XCFRAMEWORK de sortie seront ajoutés en tant que @(NativeReference) dans le projet. Les métadonnées prises en charge par @(NativeReference) like %(Kind), %(Frameworks)ou %(SmartLink) seront transférées si elles sont définies. La valeur par défaut est true.

  • %(OutputPath): peut être défini pour remplacer le chemin de sortie XCARCHIVE et XCFRAMEWORK du projet Xcode. La valeur par défaut est $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Cette action de génération a été introduite dans .NET 9.