Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les propriétés MSBuild contrôlent le comportement des cibles . Ils sont spécifiés dans le fichier projet, par exemple MyApp.csproj, dans un groupe de propriétés MSBuild.
AltoolPath
Chemin d’accès complet à l'outil altool.
Le comportement par défaut consiste à utiliser xcrun altool.
ACToolPath
Chemin d’accès complet à l'outil actool.
Le comportement par défaut consiste à utiliser xcrun actool.
AppBundleResourcePrefix
Répertoire dans lequel les ressources sont stockées (ce préfixe est supprimé lors de la copie de ressources dans le bundle d’applications).
Si elle n’est pas définie explicitement, cette propriété hérite de sa valeur des propriétés de préfixe de ressource spécifiques à la plateforme (IPhoneResourcePrefix, MonoMacResourcePrefix ou XamMacResourcePrefix en fonction de la plateforme).
Valeur par défaut : « Ressources »
AppBundleDir
Emplacement du bundle d’applications généré.
AppBundleExtraOptions
Arguments supplémentaires avancés pour la création d’un bundle d’applications.
L’ensemble d’arguments valide dépend de la plateforme.
En règle générale, elles ne doivent pas être utilisées, sauf si elles sont spécifiées par un ingénieur Microsoft.
Icône de l'application
Le groupe d’éléments AppIcon peut être utilisé pour spécifier une icône d’application pour l’application.
La valeur de la propriété doit pointer vers le nom de fichier d’une ressource d’image .appiconset (pour iOS, macOS et Mac Catalyst) ou .brandassets (pour tvOS) à l’intérieur d’un catalogue de ressources.
Exemple:
<PropertyGroup>
<!-- The value to put in here for the "Resources/MyImages.xcassets/MyAppIcon.appiconset" resource would be "MyAppIcon" -->
<AppIcon>MyAppIcon</AppIcon>
</PropertyGroup>
Voir aussi :
- Groupe d’éléments AlternateAppIcon.
- Propriété IncludeAllAppIcons.
Version d'affichage de l'application
Si elle est définie, spécifie la valeur CFBundleShortVersionString dans le manifeste de l’application (Info.plist).
Il s’agit d’une propriété qui prend en charge « Projet unique » .NET.
Pour plus d’informations, consultez OneDotNetSingleProject.
ApplicationId
Si elle est définie, spécifie la valeur CFBundleIdentifier dans le manifeste de l’application (Info.plist).
Il s’agit d’une propriété qui prend en charge « Projet unique » .NET.
Pour plus d’informations, consultez OneDotNetSingleProject.
TitreDeLApplication
Si elle est définie, spécifie la CFBundleDisplayName dans le manifeste de l’application (Info.plist).
Il s’agit d’une propriété qui prend en charge « Projet unique » .NET.
Pour plus d’informations, consultez OneDotNetSingleProject.
Version de l'application
Si elle est définie, spécifie la CFBundleVersion dans le manifeste de l’application (Info.plist).
Il s’agit d’une propriété qui prend en charge « Projet unique » .NET.
Pour plus d’informations, consultez OneDotNetSingleProject.
ArchiveBasePath
Emplacement où les archives sont stockées sur Windows pour une build distante.
La valeur par défaut est : %LocalAppData%\Xamarin\iOS\Archives
Applicable uniquement aux projets iOS (étant donné que seuls les projets iOS peuvent être générés à distance à partir de Windows).
ArchiveDir
Chemin d’accès facultatif pour le répertoire d’archivage. Si cette valeur est définie, l’archive sera créée dans ce répertoire au lieu de calculer un chemin d’accès unique sous ~/Library/Developer/Xcode/Archives.
ArchiveOnBuild
Si une archive Xcode doit être créée à la fin de la build.
Les archives créées sont exposées dans le groupe d’éléments ApplicationArtifact .
BGenEmitDebugInformation
Indique si l’outil bgen (générateur de liaison) doit ou non émettre des informations de débogage.
Le comportement par défaut est true lorsque la propriété Debug est définie sur true.
BGenExtraArgs
Tous les arguments supplémentaires pour l’outil bgen (générateur de liaisons).
BGenToolExe
Nom de l’exécutable bgen (outil utilisé par les projets de liaison pour générer des liaisons).
Le comportement par défaut consiste à utiliser l’outil bgen fourni avec notre charge de travail.
BGenToolPath
Répertoire dans lequel se trouve l’outil bgen (BGenToolExe).
Le comportement par défaut consiste à utiliser l’outil bgen fourni avec notre charge de travail.
BuildIpa
Si un package (.ipa) doit être créé pour le bundle d’applications à la fin de la build.
Applicable uniquement aux projets iOS et tvOS.
Consultez createPackage pour les projets macOS et Mac Catalyst.
Les packages IPA créés sont exposés dans le groupe d’éléments ApplicationArtifact .
BundleCreateDump
CoreCLR a un utilitaire de ligne de commande appelé createdump pour créer des vidages de base si le processus se bloque. macOS crée automatiquement des rapports d’incident pour toutes les applications App Store et les met à la disposition du développeur d’applications. Par conséquent, l’outil createdump n’est pas utile pour de nombreuses applications macOS et, par conséquent, il n’est pas inclus dans les applications par défaut.
Cela peut être substitué en définissant la BundleCreateDump propriété :
<PropertyGroup>
<BundleCreateDump>true</BundleCreateDump>
</PropertyGroup>
Remarque : l’outil createdump ne fonctionne actuellement pas pour les applications en bac à sable (#18961) ;
Applicable uniquement aux projets qui utilisent le runtime CoreCLR (qui, au moment de cette écriture, est uniquement des projets macOS).
BundleOriginalResources
Cette propriété détermine si les ressources sont compilées avant d’être incorporées dans des projets de bibliothèque ou si la version d’origine (non compilée) est incorporée.
Historiquement, les ressources ont été compilées avant d’être incorporées dans des projets de bibliothèque, mais cela nécessite que Xcode soit disponible, ce qui présente quelques inconvénients :
- Il ralentit les builds distantes sur Windows.
- Il ne fonctionnera pas lors de la génération locale sur Windows, ni sur une autre plateforme, sauf macOS.
- Les ressources sont compilées à l’aide du Xcode disponible actuel, qui n’a peut-être pas les mêmes fonctionnalités qu’un Xcode potentiellement plus récent disponible lorsque la bibliothèque en question est consommée.
- Il est impossible d’avoir une vue complète de tous les programmes lors de la création d’une application, ce qui est nécessaire pour détecter les conflits de ressources.
Par conséquent, nous avons ajouté la prise en charge de l'intégration des ressources originales dans des bibliothèques. Cette fonctionnalité sera facultative dans .NET 9, mais deviendra activée par défaut à partir de .NET 10.
Valeur par défaut de cette propriété false dans .NET 9 et true dans .NET 10+.
Remarque
Créez un problème si vous constatez que vous devez désactiver cette fonctionnalité, car il est possible que l’option de désactivation soit supprimée ultérieurement.
CheckForIllegalCrossThreadCalls
Détermine si les vérifications du thread d’interface utilisateur (les appels [NS|UI]Application.EnsureUIThread que les liaisons générées émettent pour le code d’interface utilisateur) sont effectuées.
Lorsque la valeur est définie sur true, les vérifications sont activées : l’accès à l’API d’interface utilisateur hors du thread d’interface utilisateur lève une exception. Lorsque la valeur est définie sur false, les vérifications sont désactivées.
Cette propriété est émise en tant que ObjCRuntime.Runtime.CheckForIllegalCrossThreadCalls commutateur de fonctionnalité d’exécution, de sorte qu’elle prend effet même lorsque le découpage est désactivé : le [NS|UI]Application.CheckForIllegalCrossThreadCalls champ reflète la valeur de la propriété au moment de l’exécution et les vérifications sont activées ou désactivées en conséquence.
Lorsque le découpage est activé et que les vérifications sont désactivées, ILLink remplace également le corps de la méthode [NS|UI]Application.EnsureUIThread par un stub et supprime le champ CheckForIllegalCrossThreadCalls, ce qui rend l’application légèrement plus petite et plus rapide.
Si cette valeur n’est pas spécifiée, les vérifications sont conservées dans les builds de débogage et supprimées dans les builds de mise en production.
CodesignAllocate
Chemin d’accès à l’outil codesign_allocate.
Par défaut, cette valeur est détectée automatiquement.
CodesignConfigureDependsOn
Il s’agit d’un point d’extension pour la build : un développeur peut ajouter des cibles à cette propriété pour exécuter ces cibles avant que la compilation examine les propriétés de signature de code.
Cela peut par exemple être utilisé pour désactiver la signature de code pour les builds du simulateur :
<PropertyGroup>
<CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);DisableCodesignInSimulator</CodesignConfigureDependsOn>
</PropertyGroup>
<Target Name="DisableCodesignInSimulator" Condition="'$(SdkIsSimulator)' == 'true'">
<PropertyGroup>
<EnableCodeSigning>false</EnableCodeSigning>
</PropertyGroup>
</Target>
CodesignDependsOn
Il s’agit d’un point d’extension pour la build : un développeur peut ajouter des cibles à cette propriété pour exécuter ces cibles avant la signature de l’offre groupée d’applications.
Exemple:
<PropertyGroup>
<CodesignDependsOn>$(CodesignDependsOn);DoThisBeforeCodesign</CodesignDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCodesign">
<Exec Command="echo This is executed right before the app is signed." />
</Target>
CodesignEntitlements
Chemin d’accès au fichier des droits qui spécifie les droits requis par l’application.
Habituellement « Entitlements.plist ».
Nous allons automatiquement définir cette valeur sur « Entitlements.plist » si ce fichier existe dans le répertoire racine du projet.
Cela peut être empêché en définissant la propriété EnableDefaultCodesignEntitlements sur false.
CodesignExtraArgs
Arguments supplémentaires passés à l’outil « codesign » lors de la signature du bundle d’applications.
CodesignKey
Spécifie la clé de signature de code à utiliser lors de la signature du bundle d’applications.
CodesignKeychain
Trousseau de clés à utiliser lors de la signature de code.
CodeSigningKey
Spécifie la clé de signature de code à utiliser lors de la signature du bundle d’applications.
Applicable uniquement aux applications macOS et Mac Catalyst, mais il est recommandé d’utiliser la propriété CodesignKey à la place (qui fonctionne sur toutes les plateformes).
CodesignProvision
Spécifie le profil d’approvisionnement à utiliser lors de la signature du bundle d’applications.
CodesignResourceRules
Chemin d’accès à ResourceRules.plist à copier dans le bundle d'applications.
CodesignRequireProvisioningProfile
Spécifie si un profil d’approvisionnement est requis lors de la signature de l’offre groupée d’applications.
Par défaut, nous avons besoin d’un profil d’approvisionnement si :
- macOS, Mac Catalyst : un profil d’approvisionnement a été spécifié (avec la propriété CodesignProvision).
- iOS, tvOS : la génération pour un appareil ou un fichier de droits d’utilisation a été spécifiée (avec la propriété CodesignEntitlements).
La définition de cette propriété sur true ou false remplace la logique par défaut.
CompressBindingResourcePackage
Les références natives d’un projet de liaison sont copiées dans le répertoire de sortie pendant le processus de génération, en regard de l’assembly de liaison (dans quelque chose que nous appelons un « package de ressources de liaison »).
Ces références natives peuvent être stockées compressées à l’intérieur d’un fichier zip (nommé $(AssemblyName).resources.zip, ou as-is, à l’intérieur d’un répertoire nommé $(AssemblyName).resources.
La CompressBindingResourcePackage propriété spécifie s’il faut créer un fichier zip ou un répertoire.
Les valeurs possibles sont les suivantes :
-
auto: déterminer automatiquement la meilleure option (actuellement, un fichier zip est toujours créé, mais une fois que Visual Studio prendra en charge les chemins longs sous Windows, cela pourrait changer pour ne créer que des packages de ressources de liaison zip avec des liens symboliques). -
true: créer un fichier zip -
false: créer un répertoire
La valeur par défaut est auto.
Cela s’applique également à la façon dont les références natives sont stockées dans NuGets.
Remarque
Dans certains cas, il peut être utile de forcer un fichier zip sur iOS, en particulier lorsqu’il existe une infrastructure avec des fichiers qui ont des noms longs, car le fichier zip peut parfois contourner les problèmes de MAX_PATH sur Windows.
CopyDSYMToPublishDirectory
Propriété booléenne qui spécifie si tous les répertoires générés *.dSYM doivent être copiés dans le répertoire de publication lors de la publication (dotnet publish).
Les *.dSYM répertoires sont générés à côté du bundle de l’application (voir NoDSymUtil), et lorsque cette propriété est true, ils seront également copiés dans le répertoire de publication (à côté du /.ipa.pkg généré).
La valeur par défaut est true.
CopySceneKitAssetsPath
Chemin d’accès complet à l'outil copySceneKitAssets.
Le comportement par défaut consiste à utiliser xcrun copySceneKitAssets.
CoreMLCompilerPath
Chemin d’accès complet à l'outil coremlc.
Le comportement par défaut consiste à utiliser xcrun coremlc.
CreateAppBundleDependsOn
Il s’agit d’un point d’extension pour la build : un développeur peut ajouter des cibles à cette propriété pour exécuter ces cibles lors de la création du bundle d’applications.
Exemple:
<PropertyGroup>
<CreateAppBundleDependsOn>$(CreateAppBundleDependsOn);DoThisBeforeCreatingAppBundle</CreateAppBundleDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingAppBundle">
<Exec Command="echo This is executed before the app bundle is created." />
</Target>
CreateIpaDependsOn
Il s’agit d’un point d’extension pour la construction : un développeur peut ajouter des objectifs à cette propriété pour exécuter ces objectifs lors de la création d’une IPA.
Applicable à toutes les plateformes qui créent des archives IPA (actuellement iOS et tvOS).
Exemple:
<PropertyGroup>
<CreateIpaDependsOn>$(CreateIpaDependsOn);DoThisBeforeCreatingIPA</CreateIpaDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingIPA">
<Exec Command="echo This is executed before the IPA is created." />
</Target>
CréerPaquet
Si un package (.pkg) doit être créé pour l’ensemble d’applications à la fin de la build.
Applicable uniquement aux projets macOS et Mac Catalyst.
Voir BuildIpa pour les projets iOS et tvOS.
Les packages PKG créés sont exposés dans le groupe d’éléments ApplicationArtifact .
Appareil
Spécifie l’appareil mobile ou le simulateur à cibler lors de l’utilisation dotnet run --device <Device> ou des cibles MSBuild qui interagissent avec des appareils (tels que Run, Installou Uninstall).
La valeur peut être n'importe quelle valeur que les outils en ligne de commande simctl ou devicectl acceptent pour le nom de l’appareil, ce qui est généralement soit l'UDID, soit le nom de l'appareil. Par exemple, pour l’appareil My iOS Device avec UDID 00001111-012301230123ABCD, utilisez l’un ou l’autre -p:Device="My iOS Device"-p:Device=00001111-012301230123ABCD.
Pour plus d’informations sur la sélection de l’appareil, consultez la spécification de sélection d’appareil du SDK .NET.
DeviceSpecificBuild
Si la build doit être spécifique à l’appareil sélectionné.
Applicable à toutes les plateformes qui prennent en charge les builds spécifiques à l’appareil (actuellement iOS et tvOS).
CheminSortieIntermédiaireSpécifiqueAuDispositif
Chemin de sortie intermédiaire à utiliser lorsque des builds spécifiques à l’appareil sont activées.
Applicable à toutes les plateformes qui prennent en charge les builds spécifiques à l’appareil (actuellement iOS et tvOS).
CheminDeSortieSpecifiqueAuDispositif
Chemin d’accès de sortie à utiliser lorsque des builds spécifiques à l’appareil sont activées.
Applicable à toutes les plateformes qui prennent en charge les builds spécifiques à l’appareil (actuellement iOS et tvOS).
DiagnosticAddress
Adresse IP à laquelle dotnet-dsrouter s’exécute. Il s’agit typiquement de 127.0.0.1 lors du profilage sur le simulateur et de l’adresse IP de l’ordinateur lors du profilage sur un appareil où dotnet-dsrouter.
Il s’agit du composant d’adresse IP de DiagnosticConfiguration'.
Définit implicitement EnableDiagnostics sur true.
La valeur par défaut est 127.0.0.1.
diagnosticConfiguration
Une valeur fournie par dotnet-dsrouter pour DOTNET_DiagnosticPorts telle que :
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,connect
Notez que le caractère , doit être dans une séquence d’échappement avec %2c s’il est passé en ligne de commande à dotnet build:
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect
Cette opération définit automatiquement la DOTNET_DiagnosticPorts variable d’environnement empaquetée à l’intérieur de l’application, afin que la variable d’environnement soit définie lors du lancement de l’application.
Définit implicitement EnableDiagnostics sur true.
Le comportement par défaut consiste à calculer cette valeur à partir des autres propriétés de diagnostic (DiagnosticAddress, DiagnosticPort, DiagnosticListenMode et DiagnosticSuspend).
Si elle est définie, l’une des autres propriétés de diagnostic est ignorée.
Mode d'écoute diagnostique
Valeur fournie par dotnet-dsrouter, telle que connect ou listen, le composant du mode d’écoute de DiagnosticConfiguration`.
Définit implicitement EnableDiagnostics sur true.
La valeur par défaut est listen.
DiagnosticPort
Valeur fournie par dotnet-dsrouter tel que 9000, le composant de port de DiagnosticConfiguration'.
Définit implicitement EnableDiagnostics sur true.
La valeur par défaut est 9000.
DiagnosticSuspend
Valeur qui spécifie le comportement de démarrage lors du profilage d’une application.
Définissez cette option pour true suspendre l’application au démarrage (en attendant que le serveur de diagnostics se connecte à l’application) ou false pour lancer l’application comme d’habitude (et connecter le serveur de diagnostics à l’application ultérieurement).
Cela correspond à la suspend/nosuspend valeur dans DiagnosticConfiguration'.
Définit implicitement EnableDiagnostics sur true.
La valeur par défaut est false.
DittoPath
Chemin d’accès complet au fichier exécutable ditto.
Le comportement par défaut consiste à utiliser /usr/bin/ditto.
DynamicRegistrationSupported
Détermine si le registreur dynamique est disponible au moment de l’exécution (comme indiqué par ObjCRuntime.Runtime.DynamicRegistrationSupported).
Si cette valeur n’est pas spécifiée, la compilation calcule une valeur par défaut selon que l’application a besoin du dynamic registrar et active le ObjCRuntime.Runtime.DynamicRegistrationSupported commutateur de fonctionnalité du trimmer en conséquence (de sorte que le trimmer peut supprimer le dynamic registrar lorsqu’il n’est pas nécessaire, ce qui réduit la taille de l’application).
Définissez cette propriété sur true ou false pour remplacer la valeur par défaut calculée.
La suppression de l’enregistreur dynamique nécessite un enregistreur statique (Registrar=static ou Registrar=managed-static) et l’élagage. Par conséquent, la définition de cette propriété n’a aucun effet (et la build avertit) lorsque ces conditions ne sont pas remplies.
EmbedOnDemandResources
Contrôle l’emplacement des packs de ressources à la demande lors de l’empaquetage d’une application pour la distribution. Cette propriété n’active pas les ressources à la demande (utilisez EnableOnDemandResources pour cela) ; elle affecte uniquement la façon dont les packs d’actifs déjà étiquetés sont empaquetés.
Il s’agit de la propriété définie par l’option « Incorporer des ressources à la demande dans le bundle de l’app » dans l’IDE. Cela ne prend effet que pour AdHoc la distribution :
-
true: les packs d’éléments multimédias sont incorporés dans le.appbundle à l’intérieur de l’IPA et servis localement par l’application. -
false: les packs d’éléments multimédias sont empaquetés séparément (en dehors du bundle de l’application) afin qu’ils puissent être diffusés en continu/hébergés (par exemple sur un serveur web).
Pour la distribution AppStore, les packs de ressources sont toujours placés en dehors du bundle .app (à héberger par l’App Store), quelle que soit cette propriété.
Cette propriété n’est consultée que lors de l’empaquetage d’une archive IPA pour la distribution (quand BuildIpa est true et le type de distribution est AdHoc ou AppStore) ; elle n’a aucun effet sur un simulateur ou une build de débogage d’appareil.
Valeur par défaut : true
EnableCodeSigning
Si la signature de code est activée.
La signature de code est activée par défaut pour toutes les plateformes ; cela peut être remplacé par cette propriété.
EnableDefaultCodesignEntitlements
Consultez CodesignEntitlements.
EnableOnDemandResources
Si les ressources à la demande sont activées.
Lorsqu’elle est activée, les ressources groupées marquées par la métadonnée ResourceTags sont placées dans des packs de ressources à la demande au lieu d’être copiées directement dans le bundle d’applications. Une ressource est marquée comme suit :
<ItemGroup>
<BundleResource Update="Resources\MyResource.dat" ResourceTags="MyTag" />
</ItemGroup>
Utilisez Update (et non Include) lorsque le fichier fait déjà partie des ressources par défaut du projet (par exemple tout ce qui se trouve dans le dossier Resources sur iOS, qui est automatiquement inclus en tant que BundleResource), sinon la ressource serait ajoutée deux fois et la copie non balisée l’emporterait. Dans un projet .NET MAUI, les mêmes métadonnées ResourceTags peuvent être définies sur l’élément MauiAsset correspondant.
Cette propriété active uniquement les ressources à la demande ; elle ne contrôle pas la façon dont les packs de ressources sont empaquetés pour la distribution — voir EmbedOnDemandResources pour cela.
Valeur par défaut : false pour macOS, true pour toutes les autres plateformes.
EnablePackageSigning
Si le .pkg créé (si CreatePackage a été activé) doit être signé.
Applicable uniquement à macOS et Mac Catalyst.
EnableDiagnostics
Activez les composants requis pour que les diagnostics (tels que le profilage) fonctionnent.
Il est activé par défaut pour les builds de débogage (lorsque MtouchDebug ou MmpDebug est activé), mais doit être activé manuellement avant le profilage des versions de production.
<PropertyGroup>
<EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>
Cela augmente légèrement la taille de l’application.
Applicable uniquement lors de l’utilisation du runtime Mono (CoreCLR prend toujours en charge les diagnostics, tandis que NativeAOT ne le fait jamais).
EnableSGenConc
Active le mode concurrentiel du ramasse-miettes SGen.
Applicable uniquement à iOS, tvOS et Mac Catalyst (lorsque vous n’utilisez pas NativeAOT).
Cette propriété a uniquement un effet lors de l’utilisation du runtime Mono, et un avertissement s’affiche s’il est défini sans utiliser le runtime Mono (par exemple lors de l’utilisation de CoreCLR).
EventSourceSupport
Quand false est défini, cela désactive la prise en charge d’EventSource de .NET pour les applications Android tronquées. La désactivation de cette fonctionnalité empêcherait le fonctionnement des outils de diagnostic .NET tels que dotnet-counters, mais permettrait de réduire la taille de l'application.
Valeur par défaut : false est défini à Optimize lorsque true est défini à Optimize (qui est la valeur par défaut pour les builds $(EnableDiagnostics)), sauf si est activé.
Générer le Manifeste d'Application
Si un manifeste d’application (Info.plist) doit être généré.
Valeur par défaut : true
GeneratedSourcesDir
Où la source générée à partir du générateur est enregistrée.
GenerateTrustedPlatformAssemblies
Propriété booléenne qui spécifie si la liste d’assemblys de plateforme approuvée est générée au moment de la génération au lieu d’être découverte lors du lancement de l’application.
La valeur par défaut est false pour les builds de débogage et true pour d’autres builds.
GetApplicationArtifactsDependsOn
Propriété délimitée par des points-virgules qui peut être utilisée pour étendre GetApplicationArtifacts et Publish les cibles.
Build est une dépendance obligatoire de GetApplicationArtifacts; les cibles MSBuild ajoutées à cette propriété s’exécutent une fois que la compilation de la plateforme a collecté les éléments @(ApplicationArtifact) et avant que GetApplicationArtifacts ou Publish ne les retourne.
Les builds de la plateforme Apple remplissent les métadonnées d’application courantes documentées pour ApplicationArtifact avant l’exécution des cibles de cette propriété. Les cibles d’extension peuvent mettre à jour ou remplacer ces métadonnées et doivent uniquement ajouter de nouveaux éléments lors de l’introduction d’artefacts supplémentaires.
Exemple:
<PropertyGroup>
<GetApplicationArtifactsDependsOn>$(GetApplicationArtifactsDependsOn);AddApplicationArtifactMetadata</GetApplicationArtifactsDependsOn>
</PropertyGroup>
<Target Name="AddApplicationArtifactMetadata">
<ItemGroup>
<ApplicationArtifact Update="@(ApplicationArtifact)">
<ApplicationTitle>$(ApplicationTitle)</ApplicationTitle>
</ApplicationArtifact>
</ItemGroup>
</Target>
HotReloadCompatibleBuild
Propriété booléenne qui indique si la build doit rester compatible avec Rechargement à chaud. Lorsqu’elle est définie sur true, la build évite de modifier les assemblys utilisateur afin qu’ils restent strictement identiques octet pour octet (une exigence pour Rechargement à chaud). Cela désactive quelques optimisations mineures, mais n’affectera rien d’autre.
La valeur par défaut est de true pour les builds de débogage et de false sinon.
IBToolPath
Chemin d’accès complet à l'outil ibtool.
Le comportement par défaut consiste à utiliser xcrun ibtool.
InclureTousLesIcônesD'Application
Définissez la propriété IncludeAllAppIcons sur true pour inclure automatiquement toutes les icônes d’application de tous les catalogues de ressources dans l’application.
Exemple:
<PropertyGroup>
<IncludeAllAppIcons>true</IncludeAllAppIcons>
</PropertyGroup>
Voir aussi :
- Groupe d’éléments AlternateAppIcon.
- La propriété AppIcon.
InlineClassGetHandle
Contrôle si le système de génération remplace les appels d’exécution à Class.GetHandle /
Class.GetHandleIntrinsic par des références natives directes à des classes Objective-C au moment de la génération.
Consultez classes Objective-C pour obtenir une vue d’ensemble.
Les options valides sont les suivantes :
-
compatibility: n’intègre en ligne les appelsClass.GetHandleque pour les types dont le type déclaré correspond au nom de classe Objective-C demandé. -
strict: inline tous lesClass.GetHandleappels sans condition. Nécessite l’utilisation du registreur statique (et non du registreur dynamique). - (vide): désactive l’inline des appels
Class.GetHandle.
Valeur par défaut :
- .NET 11+ :
strictlors de l’utilisation de NativeAOT (PublishAot=true),compatibilitysinon. - .NET 10 et versions antérieures : non défini (désactivé).
Exemple:
<PropertyGroup>
<InlineClassGetHandle>compatibility</InlineClassGetHandle>
</PropertyGroup>
Le comportement personnalisé pour des classes Objective-C spécifiques peut être défini à l’aide du groupe d’éléments ReferenceNativeSymbol :
<ItemGroup>
<ReferenceNativeSymbol SymbolMode="Ignore" SymbolType="ObjectiveCClass" Include="SomeClassName" />
</ItemGroup>
InlineDlfcnMethods
Contrôle si le système de génération remplace, lors de la génération, les appels, à l’exécution, aux méthodes ObjCRuntime.Dlfcn par des recherches directes de symboles natifs, éliminant ainsi la surcharge de dlsym à l’exécution.
Les options valides sont les suivantes :
-
compatibility: seuls les symboles inline sont soutenus par les attributs[Field]. Cela est plus conservateur et évite les erreurs de lien pour les symboles qui n’existent pas au moment de la génération. -
strict: la méthode Inlines dlfcn appelle et crée des références natives pour tous les symboles. Cela est plus agressif et peut entraîner des erreurs de lien si les symboles natifs référencés n’existent pas. - (vide) : désactive l’incorporation des appels de méthode dlfcn.
Valeur par défaut :
- .NET 11+ :
strictlors de l’utilisation de NativeAOT (PublishAot=true),compatibilitysinon. - .NET 10 et versions antérieures : non défini (désactivé).
Exemple:
<PropertyGroup>
<InlineDlfcnMethods>compatibility</InlineDlfcnMethods>
</PropertyGroup>
Le comportement personnalisé pour des symboles spécifiques peut être défini à l’aide du groupe d’éléments ReferenceNativeSymbol :
<ItemGroup>
<ReferenceNativeSymbol SymbolMode="Ignore" SymbolType="Field" Include="InexistentSymbol" />
</ItemGroup>
iOSMinimumVersion
Spécifie la version minimale d’iOS sur laquelle l’application peut s’exécuter.
Applicable à iOS ; la définition de cette valeur définit SupportedOSPlatformVersion pour les projets iOS (uniquement).
IPhoneResourcePrefix
Répertoire dans lequel les ressources sont stockées (ce préfixe est supprimé lors de la copie de ressources dans le bundle d’applications).
Applicable aux projets iOS, tvOS et Mac Catalyst.
Envisagez plutôt d’utiliser la propriété AppBundleResourcePrefix unifiée.
Consultez également MonoMacResourcePrefix et XamMacResourcePrefix.
IpaIncludeArtwork
Si l’illustration doit être incluse dans l’IPA.
Applicable uniquement aux projets iOS et tvOS.
IpaIncludeSymbols
Si les symboles de l’application doivent être inclus dans l’IPA, dans le répertoire Symbols attendu par Apple. Cela permet à App Store Connect (et à l’Organizer de Xcode) de symboliquer automatiquement les rapports d’incident de l’application.
Les symboles sont les fichiers Apple *.symbols générés à partir des répertoires dSYM de la build à l’aide de xcrun symbols (les répertoires dSYM eux-mêmes ne sont pas incorporés dans l’IPA).
La valeur par défaut est true. Définissez-le sur false pour la désactiver. Cette propriété n’a aucun effet, sauf si un IPA est créé (voir BuildIpa).
Applicable uniquement aux projets iOS et tvOS.
IpaPackageName
Spécifie le nom du fichier .ipa résultant (sans le chemin d’accès) lors de la création d’un package IPA (voir BuildIpa). IpaPackagePath remplace cette valeur.
Applicable uniquement aux projets iOS et tvOS.
IpaPackageDir
Spécifie le répertoire du fichier .ipa résultant lors de la création d’un package IPA (voir BuildIpa). IpaPackagePath remplace cette valeur.
Applicable uniquement aux projets iOS et tvOS.
IpaPackagePath
Spécifie le chemin d’accès au fichier .ipa résultant lors de la création d’un package IPA (voir BuildIpa).
Applicable uniquement aux projets iOS et tvOS.
L’IPA résultante est exposée dans le groupe d’éléments ApplicationArtifact .
IsAppExtension
Si un projet est une extension d’application.
IsBindingProject
Si un projet est un projet contraignant.
IsXPCService
Si une extension macOS est un service xpc.
Applicable uniquement aux projets macOS.
LinkMode
Spécifie le mode de lien du projet (None, SdkOnly ou Full).
Applicable aux projets macOS, mais cette propriété est déconseillée, utilisez TrimMode à la place.
Voir aussi MtouchLink.
LierAuxBibliothèquesDuSystèmeSwift
Si la valeur est true, la build indique à l’éditeur de liens natif où trouver les bibliothèques système de Swift.
Cela est utile lorsqu’une bibliothèque native utilise Swift, auquel cas l’éditeur de liens natif doit savoir où trouver les bibliothèques système de Swift.
Cela signifie actuellement que ces arguments seront transmis à l’éditeur de liens natif :
- -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/[platform]
- -L/Applications/Xcode.app/Contents/Developer/Platforms/[platform].platform/Developer/SDKs/[platform].sdk/usr/lib/swift
L’ensemble exact d’arguments peut changer à l’avenir.
MacCatalystMinimumVersion
Spécifie la version minimale de Mac Catalyst (iOS) sur laquelle l’application peut s’exécuter.
Applicable à Mac Catalyst ; la définition de cette valeur définira SupportedOSPlatformVersion pour les projets Mac Catalyst (uniquement).
MaciOSPrepareForBuildDependsOn
Propriété délimitée par des points-virgules qui peut être utilisée pour étendre le processus de construction. Les cibles MSBuild ajoutées à cette propriété s’exécutent tôt dans la build pour les types de projets d’application et de bibliothèque. Cette propriété est vide par défaut.
Exemple:
<PropertyGroup>
<MaciOSPrepareForBuildDependsOn>$(MaciOSPrepareForBuildDependsOn);MyCustomTarget</MaciOSPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
Cette propriété a été introduite dans .NET 9.
macOSMinimumVersion
Spécifie la version minimale de macOS sur laquelle l’application peut s’exécuter.
Applicable à macOS ; la définition de cette valeur définit SupportedOSPlatformVersion pour les projets macOS (uniquement).
MacOSXSdkVersion
Version du Kit de développement logiciel (SDK) macOS à utiliser pour la build.
Par défaut : détecté automatiquement en fonction de la version par défaut fournie avec le Xcode sélectionné.
Voir aussi MtouchSdkVersion.
MarshalManagedExceptionMode
Choisissez comment les exceptions managées sont traitées lorsqu'un cadre natif est rencontré pendant le déroulement de la pile, lors du traitement de l'exception managée.
Valeurs valides :
-
default: Actuellement, il s’agit dethrowobjectivecexception. -
unwindnativecode: ce n’est pas disponible lors de l’utilisation du runtime CoreCLR. -
throwobjectivecexception: Interceptez l'exception managée et convertissez-la en une exception Objective-C. -
abort: abandonner le processus. -
disable: Désactivez l’interception des exceptions managées. Pour MonoVM, cela équivaut àunwindnativecode, pour CoreCLR, cela équivaut àabort.
Pour plus d’informations, consultez Regroupement d’exceptions et MarshalObjectiveCExceptionMode.
MarshalObjectiveCExceptionMode
Choisissez comment les exceptions Objective-C managées sont traitées lorsqu'un cadre managé est rencontré pendant le déroulement de la pile, lors du traitement de l'exception Objective-C.
Valeurs valides :
-
default: Actuellement, il s’agit dethrowmanagedexception. -
unwindmanagedcode: ce n’est pas disponible lors de l’utilisation du runtime CoreCLR. -
throwmanagedexception: interceptez l’exception Objective-C et convertissez-la en exception managée. -
abort: abandonner le processus. -
disable: désactiver l’interception des exceptions Objective-C.
Pour plus d’informations, consultez Regroupement d’exceptions et MarshalManagedExceptionMode.
MdimportPath
Chemin d’accès complet à l'outil mdimport.
Le comportement par défaut consiste à utiliser xcrun mdimport.
MetalLibPath
Le chemin d'accès complet à l’outil metallib (Metal Linker).
Le comportement par défaut consiste à utiliser xcrun metallib.
MetalPath
Chemin d'accès complet au compilateur Metal.
Le comportement par défaut consiste à utiliser xcrun metal.
MetricsSupport
Quand la valeur est définie sur false, désactive la prise en charge des métriques de .NET pour les applications réduites. La désactivation de cette fonctionnalité empêcherait les API telles que System.Diagnostics.Metrics de fonctionner, mais permettrait une réduction de la taille de l’application.
Valeur par défaut : false est défini à Optimize lorsque true est défini à Optimize (qui est la valeur par défaut pour les builds $(EnableDiagnostics)), sauf si est activé.
MmpDebug
Active le mode de débogage pour la création d’un bundle d’applications.
Applicable uniquement aux projets macOS.
Voir aussi MtouchDebug.
MobileAggressiveAttributeTrimming
Cette propriété détermine si de nombreux attributs qui sont très rarement nécessaires au moment de l’exécution doivent être supprimés.
Cette option est activée par défaut.
Notez que si les attributs supprimés sont très rarement utilisés, il est techniquement possible que la suppression puisse modifier le comportement d’exécution.
Par exemple, System.Xml.Serialization se comporte différemment si un constructeur a l’attribut [Obsolete] (qui est l’un des attributs supprimés). Il s'agit d'un risque suffisamment faible pour justifier la suppression de ces attributs par défaut pour économiser de l'espace.
La liste des attributs supprimés peut changer à l’avenir, mais au moment de cette écriture (pour .NET 10), il s’agit des attributs suivants :
- Microsoft.CodeAnalysis.EmbeddedAttribute
- System.CLSCompliantAttribute
- System.CodeDom.Compiler.GeneratedCodeAttribute
- System.ComponentModel.EditorBrowsableAttribute
- System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute
- System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute
- System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute
- System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
- System.Diagnostics.CodeAnalysis.ExperimentalAttribute (Attribut expérimental de System.Diagnostics.CodeAnalysis)
- System.Diagnostics.CodeAnalysis.FeatureGuardAttribute
- System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute
- System.Diagnostics.CodeAnalysis.MemberNotNullAttribute
- System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute
- System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute
- System.Diagnostics.CodeAnalysis.NotNullWhenAttribute
- System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute
- System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute
- System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute
- System.Diagnostics.CodeAnalysis.StringSyntaxAttribute
- System.Diagnostics.CodeAnalysis.SuppressMessageAttribute
- System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute
- System.Diagnostics.CodeAnalysis.UnscopedRefAttribute
- System.ObsoleteAttribute
- System.Reflection.AssemblyCompanyAttribute
- System.Reflection.AssemblyConfigurationAttribute
- System.Reflection.AssemblyCopyrightAttribute
- System.Reflection.AssemblyDefaultAliasAttribute
- System.Reflection.AssemblyDescriptionAttribute
- System.Reflection.AssemblyMetadataAttribute
- System.Reflection.AssemblyProductAttribute
- System.Reflection.AssemblyTitleAttribute
- System.Runtime.CompilerServices.AsyncMethodBuilderAttribute
- System.Runtime.CompilerServices.CallerArgumentExpressionAttribute
- System.Runtime.CompilerServices.CallerFilePathAttribute
- System.Runtime.CompilerServices.CallerLineNumberAttribute
- System.Runtime.CompilerServices.CallerMemberNameAttribute
- System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute
- System.Runtime.CompilerServices.CompilerGlobalScopeAttribute
- System.Runtime.CompilerServices.EnumeratorCancellationAttribute
- System.Runtime.CompilerServices.ExtensionAttribute
- System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute
- System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute
- System.Runtime.CompilerServices.IntrinsicAttribute
- System.Runtime.CompilerServices.IsReadOnlyAttribute
- System.Runtime.CompilerServices.IsUnmanagedAttribute
- System.Runtime.CompilerServices.NativeIntegerAttribute
- System.Runtime.CompilerServices.RefSafetyRulesAttribute
- System.Runtime.CompilerServices.ScopedRefAttribute
- System.Runtime.CompilerServices.SkipLocalsInitAttribute
- System.Runtime.CompilerServices.TupleElementNamesAttribute
- System.Runtime.InteropServices.LibraryImportAttribute
- System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshallerAttribute
- System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute
- System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute
- System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute
- System.Runtime.Versioning.NonVersionableAttribute
- System.Runtime.Versioning.ObsoletedOSPlatformAttribute
- System.Runtime.Versioning.RequiresPreviewFeaturesAttribute
- System.Runtime.Versioning.SupportedOSPlatformAttribute
- System.Runtime.Versioning.SupportedOSPlatformGuardAttribute
- System.Runtime.Versioning.TargetPlatformAttribute
- System.Runtime.Versioning.UnsupportedOSPlatformAttribute
- System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute
Cette propriété a été introduite dans .NET 10.
MonoBundlingExtraArgs
Arguments supplémentaires spécifiant comment créer le bundle d’applications.
Applicable uniquement aux projets macOS.
Cette propriété est déconseillée, utilisez AppBundleExtraOptions à la place.
MonoMacResourcePrefix
Répertoire dans lequel les ressources sont stockées (ce préfixe est supprimé lors de la copie de ressources dans le bundle d’applications).
Applicable uniquement aux projets macOS.
Envisagez plutôt d’utiliser la propriété AppBundleResourcePrefix unifiée.
Voir également IPhoneResourcePrefix et XamMacResourcePrefix.
MonoUseCompressedInterfaceBitmap
Cela permet au runtime Mono d’utiliser une version compressée des bitmaps d’interface (les bitmaps d’interface sont utilisées pour déterminer si certains types implémentent une interface donnée).
Ces bitmaps peuvent utiliser une quantité importante de mémoire au moment de l’exécution, en particulier pour les applications qui ont une quantité importante d’interfaces.
Ce paramètre est désactivé par défaut, mais il peut être activé comme suit, ce qui réduit la quantité de mémoire utilisée au moment de l’exécution :
<PropertyGroup>
<MonoUseCompressedInterfaceBitmap>true</MonoUseCompressedInterfaceBitmap>
</PropertyGroup>
L’inconvénient est que les vérifications de type (obj is SomeInterface) seront plus lentes.
Applicable uniquement lors de l’utilisation du runtime Mono. Un avertissement s’affiche s’il est défini sans utiliser le runtime Mono (par exemple lors de l’utilisation de CoreCLR).
MtouchDebug
Active le mode de débogage pour la création d’un bundle d’applications.
Applicable aux projets iOS, tvOS et Mac Catalyst.
Voir également MmpDebug.
MtouchEnableSGenConc
Active le mode concurrentiel du ramasse-miettes SGen.
Applicable uniquement à iOS, tvOS et Mac Catalyst lorsque vous n’utilisez pas NativeAOT.
Cette propriété est obsolète, utilisez EnableSGenConc à la place.
Cette propriété a uniquement un effet lors de l’utilisation du runtime Mono, et un avertissement s’affiche s’il est défini sans utiliser le runtime Mono (par exemple lors de l’utilisation de CoreCLR).
MtouchExtraArgs
Arguments supplémentaires spécifiant comment créer le bundle d’applications.
Applicable uniquement aux projets iOS, tvOS et Mac Catalyst.
Cette propriété est déconseillée, utilisez AppBundleExtraOptions à la place.
MtouchInterpreter
Active l’interpréteur et peut éventuellement prendre une liste d'assemblages, séparée par des virgules, à interpréter (si elle est précédée d'un signe moins, l'assemblage est alors compilé en AOT à la place). « all » peut être utilisé pour spécifier toutes les assemblées. Cet argument peut être spécifié plusieurs fois.
Exemple:
<PropertyGroup>
<!-- interpret all assemblies -->
<MtouchInterpreter>all</MtouchInterpreter>
<!-- AOT-compile all assemblies, except System.dll, which will be interpreted. -->
<MtouchInterpreter>System</MtouchInterpreter>
<!-- interpret all assemblies, except System.Core.dll, which will be AOT-compiled. -->
<MtouchInterpreter>all,-System.Core</MtouchInterpreter>
</PropertyGroup>
Un raccourci pour la MtouchInterpreter consiste à définir UseInterpreter=true, qui équivaut à MtouchInterpreter=all.
Si les UseInterpreter et les MtouchInterpreter sont définis, MtouchInterpreter est prioritaire.
Applicable aux applications iOS, tvOS et Mac Catalyst (quand elles n’utilisent pas NativeAOT).
Le comportement par défaut consiste à ne pas activer l’interpréteur.
Remarque
MAUI modifie la valeur par défaut en définissant UseInterpreter=true pour la configuration "Debug".
Cette propriété a uniquement un effet lors de l’utilisation du runtime Mono, et un avertissement s’affiche s’il est défini sans utiliser le runtime Mono (par exemple lors de l’utilisation de CoreCLR).
MtouchLink
Spécifie le mode de lien du projet (None, SdkOnly, Full).
Applicable aux projets iOS, tvOS et Mac Catalyst, mais cette propriété est déconseillée, utilisez TrimMode à la place.
Voir également LinkMode.
MtouchSdkVersion
Version du Kit de développement logiciel (SDK) iOS ou tvOS à utiliser pour la build.
Par défaut : détecté automatiquement en fonction de la version par défaut fournie avec le Xcode sélectionné.
Voir également macOSXSdkVersion.
MtouchUseLlvm
Propriété booléenne qui spécifie si la compilation AOT doit être effectuée à l’aide de LLVM.
Applicable aux projets iOS, tvOS et Mac Catalyst.
Par défaut :
- Sur iOS et tvOS : activé pour les builds Release (où
Configuration="Release"). - Sur Mac Catalyst : jamais activé par défaut.
Cette propriété a uniquement un effet lors de l’utilisation du runtime Mono, et un avertissement s’affiche s’il est défini sans utiliser le runtime Mono (par exemple lors de l’utilisation de CoreCLR).
NoBindingEmbedding
Avertissement
Définir cette propriété sur false est actuellement déconseillé et produira une erreur de génération dans .NET 12+.
Propriété booléenne qui spécifie si les bibliothèques natives dans les projets de liaison doivent être incorporées dans l’assembly managé ou placées dans un répertoire .resources en regard de l’assembly managé.
La valeur par défaut est true (ce qui signifie que les bibliothèques natives ne seront pas incorporées dans l’assembly managé).
Remarque
Xcframeworks ne fonctionnera pas correctement si elle est incorporée dans l’assembly managé (si cette propriété n’est pas true).
NoDSymUtil
Propriété booléenne qui spécifie si la génération .dSYM doit être désactivée.
Par défaut :
-
truepour iOS et tvOS lors de la compilation pour le simulateur. -
truepour macOS et Mac Catalyst, sauf si vous créez une archive (ArchiveOnBuild=true) ou si vous utilisez Native AOT.
Cela signifie que l’archive .dSYM est générée dans les cas suivants (par défaut) :
- Sur iOS et tvOS lors de la construction pour l’appareil.
- Sur macOS et Mac Catalyst lors de la création d’une archive (
ArchiveOnBuild=true) ou à l’aide de Native AOT.
NoSymbolStrip
Propriété booléenne qui spécifie si les symboles de débogage sont supprimés de l’application au moment de la génération.
Le comportement par défaut consiste à conserver les symboles de débogage pour :
- builds
Debugpour les plateformes de bureau. - Builds de simulateur pour les plateformes mobiles.
Exemple pour conserver les symboles de débogage :
<PropertyGroup>
<NoSymbolStrip>true</NoSymbolStrip>
</PropertyGroup>
OnDemandResourcesInitialInstallTags
Propriété de chaîne qui spécifie les balises d’installation initiales pour les ressources à la demande.
OnDemandResourcesPrefetchOrder
Propriété de type chaîne qui définit l'ordre de préchargement pour les ressources à la demande.
OnDemandResourcesUrl
Propriété de chaîne qui spécifie l’URL de ressource pour les ressources à la demande.
Optimiser les PNG
Propriété booléenne qui spécifie si les images png doivent être optimisées.
OptimizePngImagesDependsOn
Il s’agit d’un point d’extension pour la build : un développeur peut ajouter des cibles à cette propriété pour exécuter ces cibles avant que toutes les images png soient optimisées.
Exemple:
<PropertyGroup>
<OptimizePngImagesDependsOn>$(OptimizePngImagesDependsOn);MyCustomTarget</OptimizePngImagesDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
OptimiserLesListesDePropriétés
Propriété booléenne qui spécifie si les listes de propriétés (plists) doivent être optimisées.
OptimizePropertyListsDependsOn
Il s’agit d’un point d’extension pour la build : un développeur peut ajouter des cibles à cette propriété pour exécuter ces cibles avant que les listes de propriétés (plists) ne soient optimisées.
Exemple:
<PropertyGroup>
<OptimizePropertyListsDependsOn>$(OptimizePropertyListsDependsOn);MyCustomTarget</OptimizePropertyListsDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
PackageSigningKey
Spécifie la clé de signature de code pour signer le package lors de la création de .pkg pour un projet macOS et Mac Catalyst.
Applicable uniquement aux applications macOS et Mac Catalyst.
PackagingExtraArgs
Spécifie tous les arguments supplémentaires à passer à l’outil « productbuild » lors de la création de .pkg pour un projet macOS et Mac Catalyst.
Applicable uniquement aux applications macOS et Mac Catalyst.
PkgPackagePath
Spécifie le chemin d’accès au fichier .pkg résultant lors de la création d’un package (voir CreatePackage).
Applicable uniquement aux applications macOS et Mac Catalyst.
Le PKG résultant est exposé dans le groupe d’éléments ApplicationArtifact .
PlutilPath
Le chemin complet vers l'outil en ligne de commande plutil.
Le comportement par défaut consiste à utiliser xcrun plutil.
PngCrushPath
Le chemin complet vers l'outil en ligne de commande pngcrush.
Le comportement par défaut consiste à utiliser xcrun pngcrush.
ProcessEnums
Propriété booléenne qui spécifie si les énumérations doivent être traitées en tant que définition d’API dans les projets de liaison.
ProductBuildPath
Chemin d’accès complet à l'outil productbuild.
Le comportement par défaut consiste à utiliser xcrun productbuild.
DéfinitionDuProduit
Modèle de définition de produit (.plist) à utiliser lors de la création de la définition de produit à transmettre à l’outil de génération de produit lors de la création de packages (.pkg).
Applicable uniquement aux applications macOS et Mac Catalyst.
RecommendedXcodeVersion
La version de Xcode recommandée pour une utilisation avec cette version de .NET pour iOS, tvOS, macOS et Mac Catalyst est.
Il s’agit de la version Xcode validée par la build (voir ValidateXcodeVersion) ; L’utilisation d’une autre version est susceptible de générer des problèmes ultérieurement dans le processus de génération.
Cette propriété est en lecture seule : elle est calculée par le Kit de développement logiciel (SDK) et ne doit pas être définie dans les fichiers projet.
Vous pouvez obtenir la version Xcode recommandée pour un projet en exécutant :
$ dotnet build -getProperty:RecommendedXcodeVersion myProject.csproj
26.6
Remarque : le numéro de version peut contenir plus de 2 composants (« 26.6.1 » par exemple). Seuls les deux premiers composants (principaux et mineurs) sont pris en compte lors de la validation de la version Xcode installée.
ReferenceNativeSymbol
RequireLinkWithAttributeForObjectiveCClassSearch
Nous allons effectuer une analyse automatique de toutes les bibliothèques pour les classes managées qui correspondent à des classes Objective-C existantes, puis créer une référence native lors de la construction pour ces classes Objective-C.
De cette façon, l’éditeur de liens natif ne supprime pas ces classes Objective-C, pensant qu’ils ne sont pas utilisés.
Toutefois, cela peut entraîner un problème si une classe managée fait référence à une classe Objective-C qui n’existe pas. Le correctif approprié pour cela consiste à supprimer ces classes managées de la build, mais cela peut être fastidieux, en particulier si la classe managée provient d’une référence binaire (par exemple, NuGet).
Dans ces cas, il est possible de définir la propriété RequireLinkWithAttributeForObjectiveCClassSearch sur true afin que nous n’analysions que les bibliothèques avec l’attribut [LinkWith] pour les classes Objective-C.
<PropertyGroup>
<RequireLinkWithAttributeForObjectiveCClassSearch>true</RequireLinkWithAttributeForObjectiveCClassSearch>
</PropertyGroup>
ResolveResourceItemsRelativeToProject
Cette propriété détermine si les éléments Content et BundleResource ont leurs noms logiques calculés par rapport au fichier projet ou par rapport au fichier qui les a déclarés.
Lorsqu’il est défini sur true, les chemins d’accès aux éléments sont toujours calculés par rapport au fichier projet. Cela résout les problèmes où les SDK (tels que le SDK Razor) ajoutent des éléments de contenu à partir d’un répertoire éloigné du projet, produisant des chemins incorrects qui sont rejetés au moment de la génération.
Lorsqu’il est défini sur false (valeur par défaut pour les versions antérieures à .NET 12), le comportement hérité est conservé : les chemins d’accès sont calculés par rapport au fichier qui a déclaré l’élément.
À compter de .NET 13, cette propriété est activée de manière permanente et sa définition sur false produira une erreur de génération.
| Version de .NET | Default |
|---|---|
| <.NET 12 |
false (opt-in) |
| .NET 12 |
true (opt-out) |
| .NET 13+ |
true (activé définitivement) |
<PropertyGroup>
<ResolveResourceItemsRelativeToProject>true</ResolveResourceItemsRelativeToProject>
</PropertyGroup>
RunWithOpen
Cette propriété détermine si les applications sont lancées à l’aide de la open commande sur macOS ou si l’exécutable de l’application est exécuté directement.
Cela s’applique uniquement aux applications macOS et Mac Catalyst.
La valeur par défaut est true. Dans ce mode, l’application sera lancée par macOS comme toute autre application d’interface utilisateur, toute sortie stdout/stderr sera avalée par macOS, et la dotnet run commande se termine dès que l’application a lancé.
Si la valeur est définie false, toute sortie stdout/stderr est imprimée sur le terminal actuel et la dotnet run commande ne se termine pas tant que l’application n’a pas quitté l’application.
Les propriétés suivantes peuvent être utilisées pour configurer le comportement lors de la définition true (par exemple, à l’aide de la open commande) :
OpenNewInstance
Si une nouvelle instance est ouverte si l’application est déjà en cours d’exécution (valeur par défaut false).
Cela transmettra -n à open si c'est défini sur true.
Exemple:
$ dotnet run -p:OpenNewInstance=false
OpenWaitForExit
Si « dotnet run » doit attendre la sortie de l’application (valeur par défaut false).
Cela transmettra -W à open si c'est défini sur true.
Remarque : la propriété WaitForExit est prioritaire sur cette propriété.
Exemple:
$ dotnet run -p:OpenWaitForExit=true
OpenArguments
Cette propriété peut être utilisée pour passer des arguments supplémentaires à la open commande.
Exemple (pour définir des variables d’environnement) :
$ dotnet run -p:OpenArguments="--env VARIABLE1=VALUE1 --env VARIABLE2=value2"
Exemple (pour rediriger stdout et stderr vers un fichier) :
$ dotnet run -p:OpenArguments="--stdout /tmp/stdout.txt --stderr /tmp/stderr.txt"
Exécutez man open pour afficher la liste de toutes les options open acceptées.
StandardOutputPath
Cette propriété peut être utilisée pour rediriger la sortie stdout de l’application vers un fichier.
Cela s’applique à toutes les plateformes (macOS, Mac Catalyst, iOS et tvOS).
Exemple d’écriture dans un fichier :
$ dotnet run -p:StandardOutputPath=stdout.txt
Exemple d’écriture dans le terminal actuel :
$ dotnet run -p:StandardOutputPath=$(tty)
[... Console.WriteLine output from app ...]
Remarque : pour les applications macOS et Mac Catalyst à l’aide de la commande open, cela peut également être effectué en passant --stdout ... à l’aide de la propriété OpenArguments.
StandardErrorPath
Cette propriété peut être utilisée pour rediriger la sortie stderr de l’application vers un fichier.
Cela s’applique à toutes les plateformes (macOS, Mac Catalyst, iOS et tvOS).
Exemple d’écriture dans un fichier :
$ dotnet run -p:StandardErrorPath=stderr.txt
Exemple d’écriture dans le terminal actuel :
$ dotnet run -p:StandardErrorPath=$(tty)
[... Console.Error.WriteLine output from app ...]
Remarque : pour les applications macOS et Mac Catalyst à l’aide de la open commande, cela peut également être effectué en passant --stderr ... à l’aide de la propriété OpenArguments .
StandardInputPath
Cette propriété peut être utilisée pour rediriger l’entrée stdin vers l’application à partir d’un fichier.
Exemple:
$ dotnet run -p:StandardInputPath=stdin.txt
Remarque : cela peut également être effectué en passant --stdin ... à l’aide de la propriété OpenArguments .
WaitForExit
Si « dotnet run » doit attendre la fermeture de l’application avant de retourner (la valeur par défaut est true pour les applications iOS et tvOS, et la valeur par défaut est false pour les applications macOS et Mac Catalyst).
Cela s’applique à toutes les plateformes (macOS, Mac Catalyst, iOS et tvOS).
Pour les applications macOS et Mac Catalyst, cette propriété est prioritaire sur la propriété OpenWaitForExit .
Exemple:
$ dotnet run -p:WaitForExit=true
SdkIsDesktop
Cette propriété est en lecture seule (la définir n’aura aucun effet) et indique si la compilation cible une plateforme de bureau (macOS ou Mac Catalyst).
Cette propriété est true lorsque la plateforme cible est macOS ou Mac Catalyst et n’est pas définie pour les builds iOS ou tvOS.
Comme SdkIsSimulator, cette propriété est définie uniquement après l’évaluation des importations et des propriétés .
SdkIsDevice
Cette propriété est en lecture seule (la définir n’aura aucun effet) et indique si la compilation cible un appareil ou non.
Cette propriété est seulement true lors de la génération pour un appareil iOS ou tvOS (c’est-à-dire lorsque SdkIsSimulator n’est pas true et que la plateforme est iOS ou tvOS). Il n’est pas défini pour les builds macOS ou Mac Catalyst.
Comme SdkIsSimulator, cette propriété est définie uniquement après l’évaluation des importations et des propriétés .
SdkIsMobile
Cette propriété est en lecture seule (la définir n’aura aucun effet) et indique si la compilation cible une plateforme mobile (iOS ou tvOS) ou non.
Cette propriété est true lorsque la plateforme cible est iOS ou tvOS et n’est pas définie pour les builds macOS ou Mac Catalyst.
Comme SdkIsSimulator, cette propriété est définie uniquement après l’évaluation des importations et des propriétés .
SdkIsSimulator
Cette propriété est une propriété en lecture seule (ce paramètre n’aura aucun effet) qui spécifie si nous créons un simulateur ou non.
Elle est définie uniquement après l’évaluation des importations et des propriétés . Cela signifie que la propriété n’est pas définie lors de l’évaluation des propriétés dans le fichier projet. Cela ne fonctionnera donc pas :
<PropertyGroup>
<EnableCodeSigning Condition="'$(SdkIsSimulator)' == 'true'">false</EnableCodeSigning>
</PropertyGroup>
Toutefois, l’une des opérations suivantes fonctionne :
<ItemGroup>
<!-- item groups (and their conditions) are evaluated after properties have been evaluated -->
<CustomEntitlements Condition="'$(SdkIsSimulator)' == 'true'" Include="com.apple.simulator-entitlement" Type="Boolean" Value="true" />
<CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);ConfigureSimulatorSigning</CodesignConfigureDependsOn>
</ItemGroup>
<!-- targets are executed after properties have been evaluated -->
<Target Name="ConfigureSimulatorSigning">
<PropertyGroup>
<EnableCodeSigning Condition="'$(SdkIsSimulator) == 'true'">false</EnableCodeSigning>
</PropertyGroup>
</Target>
Remarque : cette propriété sera toujours false sur macOS et Mac Catalyst.
StripFrameworkHeaders
Propriété booléenne qui spécifie si les répertoires Headers, Modules et PrivateHeaders sont supprimés des frameworks incorporés avant la signature du code.
La valeur par défaut est true. Définissez-le sur false pour conserver ces répertoires.
StripPath
Le chemin complet vers l'outil en ligne de commande strip.
Le comportement par défaut consiste à utiliser xcrun strip.
SupportedOSPlatformVersion
Spécifie la version minimale du système d’exploitation sur laquelle l’application peut s’exécuter.
Il est également possible d’utiliser une propriété spécifique à la plateforme :
TextureAtlasPath
Chemin d’accès complet à l'outil TextureAtlas.
Le comportement par défaut consiste à utiliser xcrun TextureAtlas.
TrimMode
Spécifie la granularité de découpage.
Les options valides sont les suivantes :
-
full: découper chaque assembly. -
partial: découper les assemblys qui ont opté pour le découpage. -
copy: ne pas découper d'assemblys.
Consultez TrimMode pour un peu plus d'informations sur la propriété TrimMode.
Remarque
Pour des raisons techniques, le découpage doit s’exécuter pour tous les projets iOS, tvOS, macOS et Mac Catalyst, même si aucun assembly n’est à découper. Pour cette raison, il n’est pas valide de désactiver le découpage en définissant PublishTrimmed sur false : pour désactiver le découpage, définissez TrimMode=copy à la place (une erreur de génération est générée si PublishTrimmed est définie sur false).
La propriété TrimMode équivaut aux propriétés MtouchLink (pour iOS, tvOS et Mac Catalyst) et Propriétés LinkMode (pour macOS), mais les valeurs de propriétés valides sont différentes (même si la sémantique est la même) :
| MtouchLink/LinkMode | TrimMode |
|---|---|
| Complet | complet |
| SdkOnly | partial |
| Aucun | copy |
À l’avenir, les propriétés MtouchLink et LinkMode seront déconseillées, utilisez TrimMode à la place.
Le mode de découpage par défaut dépend de nombreux facteurs et peut également changer à l’avenir.
Les valeurs par défaut actuelles (à partir de .NET 9) sont les suivantes :
- iOS et tvOS :
partiallors de la génération pour l'appareil,copylors de la génération pour le simulateur. - macOS : toujours
copy. - Mac Catalyst :
partiallors de la génération pour la configuration"Release",copydans le cas contraire.
Exceptions :
- La valeur par défaut est toujours
fulllors de la génération avec NativeAOT. - MAUI modifie la valeur par défaut en
copylors de la génération de la configuration deDebuget l’interpréteur est activé à l’aide de UseInterpreter (ce que MAUI active également par défaut lors de l’utilisation de la configuration"Debug").
Remarque
Le mode de découpage par défaut peut changer à l’avenir.
tvOSMinimumVersion
Spécifie la version minimale de tvOS sur laquelle l’application peut s’exécuter.
Applicable à tvOS ; la définition de cette valeur définit SupportedOSPlatformVersion pour les projets tvOS (uniquement).
UseFloatingTargetPlatformVersion
Propriété booléenne qui contrôle si les projets de bibliothèque doivent utiliser une version de plateforme cible flottante ou la version de plateforme la plus ancienne disponible.
Par défaut (à partir de .NET 10), les projets de bibliothèque sans explicite TargetPlatformVersion utilisent les assemblys de référence disponibles les plus anciens pour la version actuelle de .NET. Cela garantit une compatibilité maximale et permet la compilation du code de bibliothèque sur la surface d’API minimale disponible pour l’infrastructure cible.
Toutefois, ce comportement par défaut signifie que les projets de bibliothèque sont générés différemment des projets exécutables (qui utilisent la dernière version de la plateforme). Le code qui fonctionne dans un projet exécutable peut ne pas être compilé lorsqu’il est déplacé vers un projet de bibliothèque s’il utilise des API disponibles uniquement dans les versions de plateforme plus récentes.
La définition de cette propriété pour true désactiver la sélection automatique de la version la plus ancienne de la plateforme, ce qui permet au projet de bibliothèque d’utiliser la version de plateforme par défaut (la plus récente), comme les projets exécutables.
Exemple:
<PropertyGroup>
<!-- Use the latest platform version instead of the oldest -->
<UseFloatingTargetPlatformVersion>true</UseFloatingTargetPlatformVersion>
</PropertyGroup>
Valeur par défaut : false (utilisez la version de plateforme la plus ancienne pour les projets de bibliothèque dans .NET 10+).
Cette propriété s’applique uniquement aux projets de bibliothèque quiOutputType=Library ne sont pas des extensions d’application et qui n’ont pas spécifié de version de plateforme cible explicite (la version de la plateforme cible est le numéro de version facultatif à la fin de la TargetFramework propriété, par exemple pour TargetFramework net10.0-ios26.0 , la version de la plateforme cible est explicitement 26.0).
Cette propriété a été introduite dans .NET 10.
UseHardenedRuntime
Propriété booléenne qui spécifie si un runtime renforcé est activé.
Applicable aux projets macOS et Mac Catalyst.
UtiliserInterprète
Active l’interpréteur (pour tous les assemblies).
Cela équivaut à définir MtouchInterpreter=all.
Applicable aux applications iOS, tvOS et Mac Catalyst (quand elles n’utilisent pas NativeAOT).
Le comportement par défaut consiste à ne pas activer l’interpréteur.
Remarque
MAUI modifie la valeur par défaut en définissant UseInterpreter=true pour la configuration "Debug".
Pour plus d’informations, consultez MtouchInterpreter.
Cette propriété a uniquement un effet lors de l’utilisation du runtime Mono, et un avertissement s’affiche s’il est défini sans utiliser le runtime Mono (par exemple lors de l’utilisation de CoreCLR).
UseNativeHttpHandler
Indique si le gestionnaire http natif doit être le gestionnaire http par défaut ou non.
Valeur par défaut : true pour toutes les plateformes, à l’exception de macOS.
ValidateEntitlements
Choisissez si les autorisations sollicitées par l'application doivent être validées.
Valeurs valides pour cette propriété :
-
disable: la validation est désactivée. -
warn: tous les échecs de validation sont affichés en tant qu’avertissements. -
error: les échecs de validation sont affichés comme des erreurs. Il s’agit de la valeur par défaut.
Le processus de validation peut ne pas valider tous les droits, et il n’est pas garanti qu’il ne soit pas trop long.
Si la validation échoue pour les autorisations qui fonctionnent réellement, signalez un nouveau problème.
ValidateXcodeVersion
Indiquez si la version Xcode actuelle doit être validée.
La valeur par défaut est de valider ; définissez-la à false pour désactiver.
Remarque
L’utilisation d’une version différente de la version recommandée risque de générer des problèmes ultérieurement dans le processus de génération.
XamMacResourcePrefix
Répertoire dans lequel les ressources sont stockées (ce préfixe est supprimé lors de la copie de ressources dans le bundle d’applications).
Applicable aux projets macOS.
Envisagez plutôt d’utiliser la propriété AppBundleResourcePrefix unifiée.
Consultez également IPhoneResourcePrefix et MonoMacResourcePrefix.
XcodeLocation
Spécifie l’emplacement de Xcode.
Lorsque la build recherche Xcode, la recherche s'effectue dans cet ordre :
- Si la propriété
XcodeLocationest définie, utilisez-la. Notez que, étant donné que toutes les variables d’environnement sont également des propriétés MSBuild automatiquement, il est également possible de définir la variable d’environnementXcodeLocationpour le même effet. - Si la variable d’environnement
MD_APPLE_SDK_ROOTest définie, utilisez-la. - Si l’un des fichiers
~/Library/Preferences/maui/Settings.plistou~/Library/Preferences/Xamarin/Settings.plistexiste et a pour valeur de liste de propriétésAppleSdkRoot, utilisez-le. - Utilisez la version de Xcode fournie par le système (comme déterminé en exécutant
xcode-select --print-path).
Avertissement
La prise en charge de la variable d’environnement MD_APPLE_SDK_ROOT, ainsi que des fichiers ~/Library/Preferences/maui/Settings.plist et ~/Library/Preferences/Xamarin/Settings.plist, est dépréciée et sera supprimée à l’avenir.
À l’avenir, choisissez le Xcode à utiliser en en faisant la version système de Xcode (soit à l’aide de xcode-select --switch ... en ligne de commande, soit dans les paramètres de Xcode), ou en définissant la propriété MSBuild / la variable d’environnement XcodeLocation.
ZipPath
Le chemin complet vers l'outil en ligne de commande zip.
Le comportement par défaut consiste à utiliser xcrun zip.