Sdílet prostřednictvím


Vytváření položek pro iOS, Mac Catalyst, macOS a tvOS

Položky pro sestavení určují, jak se sestavují projekty .NET pro iOS, Mac Catalyst, macOS a tvOS nebo projekty knihoven.

Další rozšíření aplikace

Skupina položek obsahující všechna další rozšíření aplikace, která se mají zkopírovat do sady aplikací.

Můžete nastavit následující metadata:

  • Obsahuje: Cesta k adresáři se sestavením pro projekt rozšíření aplikace Xcode.
  • Název: Název rozšíření.
  • BuildOutput: Tato hodnota se připojí k hodnotě Include , která vytvoří umístění sady appex. Xcode obvykle umístí sestavení pro simulátor a zařízení do různých umístění, takže to lze použít k tomu, aby měl jediný AdditionalAppExtensions záznam odkazující na dvě různé sady appex v závislosti na tom, zda se sestavuje pro simulátor nebo zařízení.
  • CodesignEntitlements: Určuje oprávnění, která se mají použít při podepisování rozšíření aplikace. Výchozí hodnota je '%(Name).entitlements' v adresáři sestavení 'Include' (pokud tento soubor existuje).
  • CodesignWarnIfNoEntitlements: Pokud není nastavena žádná CodesignEntitlements hodnota, vytvoří se upozornění. Tuto vlastnost lze nastavit tak, aby false toto upozornění umlčela.

Příklad:

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

Ukázkové řešení najdete tady: TestApplication.

AlternativníIkonaAplikace

Skupinu položek AlternateAppIcon lze použít k určení alternativních ikon aplikací.

Metadata Include musí odkazovat na název souboru obrázkového prostředku .appiconset (pro iOS, macOS a Mac Catalyst) nebo .imagestack (pro tvOS) v katalogu prostředků.

Příklad:

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

Viz také:

AtlasTexture

Skupina položek, která obsahuje textury atlasu.

BGenReferencePath

Seznam referencí k sestavení, které se mají předat nástroji bgen (generátor vazeb).

Obvykle se to zpracovává automaticky přidáním odkazů jako položek ProjectReference nebo PackageReference.

BundleResource

Soubory, které se mají zkopírovat do sady aplikací.

Viz také:

CodesignBundle

Další balíčky uvnitř konečné aplikace, které by se měly podepsat.

Účelem je zahrnout do procesu podepisování aplikace všechny ostatní balíčky, které jsou ručně kopírovány (například prostřednictvím vlastních cílů MSBuild během sestavování) do balíčku aplikace.

Cesta, kterou je třeba zahrnout, je cesta k sadě aplikací, kterou je třeba podepsat uvnitř hlavní sady aplikací, včetně samotného názvu této sady.

Příklad:

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

Na CodesignBundle položce je možné nastavit několik metadat, aby bylo možné nasměrovat, jak k podepisování dochází:

Příklad:

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

Všechna metadata, která nejsou nastavena, budou místo toho používat odpovídající vlastnost (například pokud nejsou nastavena metadata CodesignSigningKey, použije se místo toho hodnota vlastnosti CodesignSigningKey.)

Collada

Skupina položek, která obsahuje soubory Collada.

Obsah

Prostředky (soubory), které se mají zkopírovat do sady aplikací.

Umístí se do následujícího adresáře v sadě aplikací:

  • /Zdroje: iOS a tvOS
  • /Contents/Resources: macOS a Mac Catalyst

Metadata Link je možné nastavit na cestu vzhledem k cílovému adresáři a změnit umístění v sadě aplikací.

Příklad:

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

umístí soubor do následujícího umístění:

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

Viz také:

CoreML Model

Skupina položek, která obsahuje modely CoreML.

Vlastní oprávnění

Skupina položek, která obsahuje vlastní oprávnění pro přidání do aplikace.

Tato oprávnění se zpracovávají jako poslední a přepíší všechna ostatní oprávnění ze souboru zadaného pomocí vlastnosti CodesignEntitlements nebo z používaného zřizovacího profilu (pokud existuje).

Toto je formát:

<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

Skupina položek, která obsahuje grafiku iTunes pro IPAs.

Platí pouze pro projekty iOS a tvOS.

ITunesMetadata

Platí pouze pro projekty iOS a tvOS.

ImageAsset

Skupina položek, která obsahuje obrazové soubory.

Definice rozhraní

Skupina položek obsahující definice rozhraní (soubory *.xib nebo *.storyboard).

Popis odkazu

Další soubory XML, které se mají předat do zatřihovače.

To je stejné jako nastavení TrimmerRootDescriptor.

LinkerArgument

Další argumenty, které se mají předat nativnímu linkeru (ld) při kompilaci hlavního spustitelného souboru pro aplikaci nebo rozšíření aplikace.

Příklad 1 (pro propojení s architekturou AudioToolbox ):

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

Příklad 2 (pro propojení s vlastní statickou knihovnou):

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

Každý argument linkeru je samostatný LinkerArgumenta argumenty nesmí být citovány.

Všechny argumenty se předají nativnímu linkeru v pořadí, v jakém jsou přidány do LinkerArgument skupiny položek, ale přesné umístění ve všech argumentech předaných nativnímu linkeru není definováno.

Nativní spustitelný soubor se automaticky znovu sestaví, pokud se sada LinkerArgument mezi sestaveními změní, ale pokud LinkerArgument odkazuje na soubor (například statickou knihovnu), a jestliže se tento soubor změní, tato změna se nezjistí a nativní spustitelný soubor se automaticky nepřestaví.

Kov

Skupina položek obsahující kovová aktiva.

MlaunchAdditionalArguments

Skupina položek, která obsahuje další argumenty mlaunch nástroje, která slouží ke spouštění aplikací na zařízení a simulátoru. Nástroj mlaunch je považován za interní nástroj a chování se může kdykoli změnit.

Poznámka:

To platí jenom při spuštění aplikace z příkazového řádku (dotnet run nebo dotnet build -t:Run), ne při spuštění z integrovaného vývojového prostředí (IDE).

MlaunchEnvironmentVariables

Skupina položek obsahující proměnné prostředí, které se nastaví při spuštění aplikace, a to buď na zařízení, nebo v simulátoru.

Poznámka:

To platí jenom při spuštění aplikace z příkazového řádku (dotnet run nebo dotnet build -t:Run), ne při spuštění z integrovaného vývojového prostředí (IDE).

NativeReference

Skupina položek, která obsahuje jakékoli nativní odkazy, jež by měly být propojeny nebo připojeny při vytváření nativního spustitelného souboru.

ObjcBindingApiDefinition

Skupina položek, která obsahuje seznam všech definic rozhraní API pro vazbové projekty.

ObjcBindingCoreSource

Skupina položek se seznamem všech základních zdrojových kódů pro vazbové projekty.

ObjCBindingNativeFramework

Skupina položek, která obsahuje seznam všech nativních architektur, které by měly být zahrnuty do vazbového projektu.

Tato skupina položek je zastaralá, místo toho použijte NativeReference.

ObjcBindingNativeLibrary

Skupina položek, která obsahuje seznam všech nativních knihoven, které by měly být zahrnuty do vazbového projektu.

Tato skupina položek je zastaralá, místo toho použijte NativeReference.

Částečný manifest aplikace

PartialAppManifest lze použít k přidání dalších částečných manifestů aplikace, které budou sloučeny s hlavním manifestem aplikace (Info.plist).

Všechny hodnoty v částečném manifestu aplikace přepíší hodnoty v hlavním manifestu aplikace, pokud není Overwrite metadata nastavena na false.

Pokud je stejná hodnota zadaná v několika částečných manifestech aplikace, není určená, která z nich se použije.

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

Pokud vývojář potřebuje provést cíl pro výpočet toho, co se má přidat do skupiny položek PartialAppManifest, je možné zajistit, aby se tento cíl spustil před procesem PartialAppManifest položek přidáním do vlastnosti CollectAppManifestsDependsOn:

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

SkipCodesignItems

Skupina položek, která určuje soubory nebo adresáře v sadě aplikací, které by se neměly podepsat.

Účelem je vyloučit z podepisování souborů a adresářů, které se zkopírují ručně (například prostřednictvím vlastních cílů MSBuild v souboru projektu) do sady aplikací a které jsou již podepsané.

Cesta, která se má zahrnout, je cesta k souboru nebo adresáři vzhledem ke kořenovému adresáři balíčku aplikace.

Příklad:

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

Platí pro všechny platformy.

XcodeProject

<XcodeProject> lze použít k sestavení a využívání výstupů projektů architektury Xcode vytvořených v Xcode nebo elsewehere.

Metadata Include by měla odkazovat na cestu k souboru XCODEPROJ, který se má sestavit.

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

Podporují se následující metadata nástroje MSBuild:

  • %(SchemeName): Název schématu sestavení nebo cíle, který by se měl použít k sestavení projektu.

  • %(Configuration): Název konfigurace, která se má použít k sestavení projektu. Výchozí hodnota je Release.

  • %(CreateNativeReference): Výstupní soubory XCFRAMEWORK se do projektu přidají jako @(NativeReference). Metadata podporovaná @(NativeReference), jako %(Kind), %(Frameworks)nebo %(SmartLink), se přepošle, pokud je nastavena. Výchozí hodnota je true.

  • %(OutputPath): Lze nastavit pro přepsání výstupní cesty XCARCHIVE a XCFRAMEWORK projektu Xcode. Výchozí hodnota je $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Tato akce sestavení byla zavedena v .NET 9.