Compartir a través de


Crear elementos para iOS, Mac Catalyst, macOS y tvOS

Los elementos de compilación controlan cómo se compilan los proyectos de biblioteca o aplicación .NET para iOS, Mac Catalyst, macOS y tvOS.

ExtensionesAdicionalesDeAplicaciones

Un grupo de elementos que contiene las extensiones de aplicación adicionales que se van a copiar en la agrupación de aplicaciones.

Se pueden establecer los metadatos siguientes:

  • Incluye: la ruta de acceso al directorio de construcción del proyecto de extensión de la aplicación de Xcode.
  • Name: nombre de la extensión.
  • BuildOutput: Este valor se anexa al valor del Include para generar la ubicación del paquete appex. Normalmente, Xcode colocará las compilaciones del simulador y del dispositivo en diferentes ubicaciones, por lo que se puede usar para tener una sola entrada AdditionalAppExtensions que apunte a dos diferentes paquetes de appex, dependiendo de si se compila para el simulador o el dispositivo.
  • CodesignEntitlements: Especifica los permisos que se usarán al firmar la extensión de la aplicación. El valor predeterminado es "%(Name).entitlements" en el directorio de compilación "Include" (si existe este archivo).
  • CodesignWarnIfNoEntitlements: se generará una advertencia si no se establece ningún valor de CodesignEntitlements. Esta propiedad se puede establecer en false para silenciar esta advertencia.

Ejemplo:

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

Puede encontrar una solución de ejemplo aquí: TestApplication.

IconoAlternativoDeApp

El grupo de elementos AlternateAppIcon se puede usar para especificar iconos de aplicación alternativos.

Los metadatos de Include deben apuntar al nombre de archivo de un recurso de imagen .appiconset (para iOS, macOS y Mac Catalyst) o .imagestack (para tvOS) dentro de un catálogo de activos.

Ejemplo:

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

Consulte también:

AtlasTexture

Grupo de elementos que contiene texturas de atlas.

BGenReferencePath

Lista de referencias de ensamblaje que se van a pasar a la herramienta bgen (generador de enlaces).

Normalmente, esto se controla automáticamente agregando referencias como elementos ProjectReference o PackageReference.

BundleResource

Archivos que se van a copiar en la agrupación de aplicaciones.

Consulte también:

CodesignBundle

Paquetes adicionales dentro de la aplicación final que se deben firmar.

El propósito es incluir en la firma de la aplicación cualquier otro lote que se copie manualmente (por ejemplo, a través de destinos de MSBuild personalizados durante la compilación) en la agrupación de aplicaciones.

La ruta de acceso que se va a incluir es la ruta de acceso a la agrupación de aplicaciones para iniciar sesión dentro del lote de aplicaciones principal, incluido el propio nombre del lote de la aplicación.

Ejemplo:

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

Hay varios fragmentos de metadatos que se pueden establecer en el elemento de CodesignBundle para dirigir cómo se produce la firma:

Ejemplo:

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

Los metadatos no establecidos usarán la propiedad correspondiente en su lugar (por ejemplo, si no se establecen los metadatos de CodesignSigningKey, el valor de la propiedad CodesignSigningKey se usará en su lugar).

Collada

Un grupo de elementos que contiene recursos de collada.

Contenido

Recursos (archivos) que se van a copiar en la agrupación de aplicaciones.

Se colocarán en el siguiente directorio dentro del conjunto de aplicaciones:

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

Es posible establecer los metadatos de Link en una ruta de acceso relativa al directorio de destino para cambiar la ubicación en el paquete de aplicaciones.

Ejemplo:

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

colocaría el archivo en la siguiente ubicación:

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

Consulte también:

CoreMLModel

Un grupo de elementos que contiene modelos CoreML.

Entitlements personalizados

Grupo de elementos que contiene derechos personalizados que se van a agregar a la aplicación.

Estos derechos se procesan por última vez y invalidarán cualquier otro derecho, ya sea desde el archivo especificado con la propiedad CodesignEntitlements , o desde el perfil de aprovisionamiento en uso (si existe).

Este es el formato:

<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

Un grupo de elementos que contiene ilustraciones de iTunes para ipAs.

Solo se aplica a proyectos de iOS y tvOS.

MetadatosDeITunes

Solo se aplica a proyectos de iOS y tvOS.

ImageAsset

Un grupo de elementos que contiene recursos de imagen.

Definición de Interfaz

Grupo de elementos que contiene definiciones de interfaz (archivos *.xib o *.storyboard).

Descripción del Enlace

Archivos XML adicionales que se van a pasar al recortador.

Esto es lo mismo que establecer TrimmerRootDescriptor.

Metálico

Grupo de elementos que contiene activos metálicos.

MlaunchAdditionalArguments

Un grupo de elementos que contiene argumentos adicionales para la mlaunch herramienta, que se usa para iniciar aplicaciones en el dispositivo y en el simulador. La mlaunch herramienta se considera una herramienta interna y el comportamiento puede cambiar en cualquier momento.

Nota:

Esto solo se aplica al iniciar la aplicación desde la línea de comandos (dotnet run o dotnet build -t:Run), no al iniciar desde el IDE.

MlaunchEnvironmentVariables

Un grupo de elementos que contiene variables de entorno que se establecerán cuando se inicie la aplicación, ya sea en el dispositivo o en el simulador.

Nota:

Esto solo se aplica al iniciar la aplicación desde la línea de comandos (dotnet run o dotnet build -t:Run), no al iniciar desde el IDE.

NativeReference

Grupo de elementos que contiene referencias nativas que se deben enlazar al compilar el ejecutable nativo.

ObjcBindingApiDefinition

Un grupo de elementos que muestra todas las definiciones de API para los proyectos de enlace.

ObjcBindingCoreSource

Un grupo de elementos que muestra todo el código fuente principal para los proyectos de enlace.

ObjCBindingNativeFramework

Un grupo de elementos que enumera todos los marcos nativos que se deben incluir en un proyecto de enlace.

Este grupo de elementos está en desuso, use NativeReference en su lugar.

ObjcBindingNativeLibrary

Un grupo de elementos que enumera todas las bibliotecas nativas que se deben incluir en un proyecto de enlace.

Este grupo de elementos está en desuso, use NativeReference en su lugar.

ManifiestoParcialDeAplicación

PartialAppManifest se puede usar para agregar manifiestos de aplicación parcial adicionales que se combinarán con el manifiesto de aplicación principal (Info.plist).

Los valores de los manifiestos parciales de la aplicación anularán los valores del manifiesto principal de la aplicación, a menos que los metadatos de Overwrite se establezcan en false.

Si se especifica el mismo valor en varios manifiestos de aplicación parciales, no se determina cuál será el que se usará.

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

Si el desarrollador necesita ejecutar un destino para calcular qué agregar al grupo de elementos de PartialAppManifest, es posible asegurarse de que este destino se ejecuta antes de que los elementos de PartialAppManifest se procesen agregándolo a la propiedad CollectAppManifestsDependsOn:

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

XcodeProject

<XcodeProject> se puede usar para compilar y consumir las salidas de los proyectos de marco de Xcode creados en Xcode o elsewehere.

Los metadatos de Include deben apuntar a la ruta del archivo XCODEPROJ que se va a compilar.

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

Se admiten los siguientes metadatos de MSBuild:

  • %(SchemeName): el nombre del esquema de compilación o destino que se debe usar para compilar el proyecto.

  • %(Configuration): el nombre de la configuración que se va a usar para compilar el proyecto. El valor predeterminado es Release.

  • %(CreateNativeReference): los archivos XCFRAMEWORK de salida se agregarán como @(NativeReference) al proyecto. Los metadatos admitidos por @(NativeReference) como %(Kind), %(Frameworks)o %(SmartLink) se reenviarán si están establecidos. El valor predeterminado es true.

  • %(OutputPath): Se puede establecer para sobrescribir las rutas de acceso de salida de XCARCHIVE y XCFRAMEWORK del proyecto de Xcode. El valor predeterminado es $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Esta acción de compilación se introdujo en .NET 9.