Compartilhar via


Compilar itens para iOS, Mac Catalyst, macOS e tvOS

Os itens de build controlam como os projetos de aplicativo ou biblioteca do .NET para iOS, Mac Catalyst, macOS e tvOS são criados.

ExtensõesAdicionaisDeAplicativos

Um grupo de itens que contém extensões de aplicativo adicionais para copiar para o pacote do aplicativo.

Os seguintes metadados podem ser definidos:

  • Inclua: o caminho para o diretório de compilação do projeto de extensão do aplicativo Xcode.
  • Name: o nome da extensão.
  • BuildOutput: esse valor é acrescentado ao valor Include para produzir o local do pacote appex. Normalmente, o Xcode colocará as compilações para simulador e dispositivo em locais diferentes, portanto, é possível usar uma única entrada AdditionalAppExtensions que aponta para dois bundles appex distintos, dependendo se a compilação é para o simulador ou o dispositivo.
  • CodesignEntitlements: especifica os direitos a serem usados ao assinar a extensão do aplicativo. O valor padrão é '%(Name).entitlements' no diretório de compilação 'Include' (se esse arquivo existir).
  • CodesignWarnIfNoEntitlements: um aviso será produzido se nenhum valor CodesignEntitlements for definido. Essa propriedade pode ser definida para false silenciar este aviso.

Exemplo:

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

Uma solução de exemplo pode ser encontrada aqui: TestApplication.

ÍconeAlternativoDoApp

O grupo de itens AlternateAppIcon pode ser usado para especificar ícones de aplicativo alternativos.

Os metadados Include devem indicar o nome do arquivo de um recurso de imagem .appiconset (para iOS, macOS e Mac Catalyst) ou .imagestack (para tvOS) dentro de um catálogo de ativos.

Exemplo:

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

Veja também:

AtlasTexture

Um grupo de itens que contém texturas atlas.

BGenReferencePath

A lista de referências de assembly a serem passadas para a ferramenta bgen (binding generator).

Normalmente, isso é tratado automaticamente adicionando como referências os itens ProjectReference ou PackageReference.

BundleResource

Arquivos a serem copiados para o pacote do aplicativo.

Veja também:

CodesignBundle

Pacotes adicionais a serem assinados dentro do aplicativo final.

A finalidade é incluir no aplicativo a assinatura de outros pacotes que são copiados manualmente (por exemplo, por meio de destinos personalizados do MSBuild durante o build) para o pacote do aplicativo.

O caminho a ser incluído é o caminho para o pacote do aplicativo entrar no pacote principal do aplicativo, incluindo o próprio nome do pacote de aplicativos.

Exemplo:

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

Há várias partes de metadados que podem ser definidas no item CodesignBundle para direcionar como a assinatura ocorre:

Exemplo:

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

Qualquer metadado não definido usará a propriedade correspondente em vez disso (por exemplo, se os metadados CodesignSigningKey não estiverem definidos, o valor da propriedade CodesignSigningKey será usado em vez disso.)

Collada

Um grupo de itens que contém ativos collada.

Conteúdo

Recursos (arquivos) a serem copiados para o pacote do aplicativo.

Eles serão colocados no seguinte diretório dentro do pacote do aplicativo:

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

É possível definir os metadados Link para um caminho relativo ao diretório de destino, a fim de alterar o local do pacote do aplicativo.

Exemplo:

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

colocaria o arquivo no seguinte local:

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

Veja também:

CoreMLModel

Um grupo de itens que contém modelos CoreML.

Direitos Personalizados

Um grupo de itens que contém direitos personalizados a serem adicionados ao aplicativo.

Essas permissões são processadas por último e substituirão quaisquer outras permissões, seja a partir do arquivo especificado com a propriedade CodesignEntitlements, ou do perfil de provisionamento em uso (se houver).

Este é o 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

Um grupo de itens que contém ilustrações do iTunes para IPAs.

Aplicável somente a projetos iOS e tvOS.

Metadados do iTunes

Aplicável somente a projetos iOS e tvOS.

ImageAsset

Um grupo de itens que contém ativos de imagem.

Definição de Interface

Um grupo de itens que contém definições de interface (arquivos *.xib ou *.storyboard).

Descrição do Link

Arquivos XML adicionais para passar ao trimmer.

Isso é o mesmo que definir TrimmerRootDescriptor .

LinkerArgument

Argumentos adicionais a serem passados para o vinculador nativo (ld) ao compilar o executável principal para um aplicativo ou extensão de aplicativo.

Exemplo 1 (para vincular ao AudioToolbox framework):

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

Exemplo 2 (para vincular a uma biblioteca estática personalizada):

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

Cada argumento para o vinculador é separado LinkerArgumente os argumentos não devem ser citados.

Todos os argumentos serão passados para o vinculador nativo na ordem em que são adicionados ao LinkerArgument grupo de itens, mas o local exato em todos os argumentos passados para o vinculador nativo não está definido.

O executável nativo será reconstruído automaticamente se o conjunto de LinkerArgument mudar entre builds, mas se um LinkerArgument apontar para um arquivo (como uma biblioteca estática) e esse arquivo for alterado, essa alteração não será detectada e o executável nativo não será reconstruído automaticamente.

Metal

Um grupo de itens que contém ativos de metal.

Argumentos Adicionais do Mlaunch

Um grupo de itens que contém argumentos extras para a mlaunch ferramenta, que é usado para iniciar aplicativos no dispositivo e no simulador. A mlaunch ferramenta é considerada uma ferramenta interna e o comportamento pode mudar a qualquer momento.

Observação

Isso só se aplica ao iniciar o aplicativo na linha de comando (dotnet run ou dotnet build -t:Run), não ao iniciar a partir do IDE.

MlaunchEnvironmentVariables

Um grupo de itens que contém variáveis de ambiente que serão definidas quando o aplicativo for iniciado, no dispositivo ou no simulador.

Observação

Isso só se aplica ao iniciar o aplicativo na linha de comando (dotnet run ou dotnet build -t:Run), não ao iniciar a partir do IDE.

NativeReference

Um grupo de itens que contém referências nativas que devem ser incorporadas ou associadas ao criar um executável nativo.

ObjcBindingApiDefinition

Um grupo de itens que lista todas as definições de API para projetos de associação.

ObjcBindingCoreSource

Um grupo de itens que lista todo o código-fonte principal para projetos de associação.

ObjCBindingNativeFramework

Um grupo de itens que lista todos os frameworks nativos que devem ser incluídos em um projeto de bindings.

Esse grupo de itens foi preterido, use NativeReference.

Biblioteca Nativa ObjcBinding

Um grupo de itens que lista todas as bibliotecas nativas que devem ser incluídas em um projeto de associação.

Esse grupo de itens foi preterido, use NativeReference.

ManifestoParcialDoAplicativo

PartialAppManifest pode ser usado para adicionar manifestos de aplicativo parciais adicionais que serão mesclados com o manifesto principal do aplicativo (Info.plist).

Todos os valores nos manifestos parciais do aplicativo substituirão valores no manifesto do aplicativo principal, a menos que os metadados Overwrite sejam definidos como false.

Se o mesmo valor for especificado em vários manifestos parciais do aplicativo, será indeterminado qual será o usado.

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

Se o desenvolvedor precisar executar um destino para calcular o que adicionar ao grupo de itens PartialAppManifest, é possível garantir que esse destino seja executado antes que os itens PartialAppManifest sejam inseridos adicionando-o à propriedade CollectAppManifestsDependsOn:

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

SkipCodesignItems

Um grupo de itens que especifica arquivos ou diretórios no pacote de aplicativos que não devem ser assinados.

A finalidade é excluir da operação de assinatura os arquivos e diretórios que são copiados manualmente (por exemplo, por destinos personalizados do MSBuild no arquivo de projeto) para o bundle do aplicativo e que já estão assinados.

O caminho a ser incluído é o caminho para o arquivo ou diretório relativo à raiz do pacote do aplicativo.

Exemplo:

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

Aplicável a todas as plataformas.

XcodeProject

<XcodeProject> pode ser usado para criar e consumir as saídas de projetos de estrutura Xcode criados no Xcode ou em elsewehere.

Os metadados Include devem apontar para o caminho do arquivo XCODEPROJ a ser criado.

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

Há suporte para os seguintes metadados do MSBuild:

  • %(SchemeName): o nome do esquema de construção ou alvo que deve ser usado para compilar o projeto.

  • %(Configuration): o nome da configuração a ser usada para compilar o projeto. O valor padrão é Release.

  • %(CreateNativeReference): Arquivos XCFRAMEWORK de saída serão adicionados como um @(NativeReference) ao projeto. Os metadados compatíveis com @(NativeReference), como %(Kind), %(Frameworks)ou %(SmartLink), serão encaminhados se estiverem definidos. O valor padrão é true.

  • %(OutputPath): pode ser configurado para substituir os caminhos de saída XCARCHIVE e XCFRAMEWORK do projeto Xcode. O valor padrão é $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Essa ação de build foi introduzida no .NET 9.