Freigeben über


Erstelle Elemente für iOS, Mac Catalyst, macOS und tvOS

Build-Elemente steuern, wie .NET-Anwendungen oder -Bibliotheksprojekte für iOS, Mac Catalyst, macOS und tvOS erstellt werden.

ZusätzlicheApp-Erweiterungen

Eine Elementgruppe, die beliebige zusätzliche App-Erweiterungen enthält, die in das App-Paket kopiert werden sollen.

Die folgenden Metadaten können festgelegt werden:

  • Einschließen: Der Pfad zum Build-Verzeichnis für das Xcode-App-Erweiterungsprojekt.
  • Name: Der Name der Erweiterung.
  • BuildOutput: Dieser Wert wird an den Include Wert angefügt, um den Speicherort des appex-Bündels zu erzeugen. In der Regel platziert Xcode Simulator- und Geräte-Builds an verschiedenen Orten, sodass dies verwendet werden kann, um einen einzigen AdditionalAppExtensions Eintrag zu haben, der auf zwei verschiedene Appex-Bundles verweist, je nachdem, ob es sich um ein Gebäude für den Simulator oder das Gerät handelt.
  • CodesignEntitlements: Gibt die Berechtigungen an, die beim Signieren der App-Erweiterung verwendet werden sollen. Der Standardwert ist "%(Name).Entitlements" im "Include"-Buildverzeichnis (sofern diese Datei vorhanden ist).
  • CodesignWarnIfNoEntitlements: Es wird ein Verweis angezeigt, wenn kein Wert CodesignEntitlements gesetzt ist. Diese Eigenschaft kann auf false festgelegt werden, um diese Warnung zu unterdrücken.

Beispiel:

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

Hier finden Sie eine Beispiellösung: TestApplication.

AlternateAppIcon

Die AlternateAppIcon Elementgruppe kann verwendet werden, um alternative App-Symbole anzugeben.

Die Include-Metadaten müssen auf den Dateinamen einer .appiconset-Bildressource (für iOS, macOS und Mac Catalyst) oder einer .imagestack-Bildressource (für tvOS) innerhalb eines Asset-Katalogs verweisen.

Beispiel:

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

Siehe auch:

Atlastextur

Eine Elementgruppe, die Atlastexturen enthält.

BGenReferencePath

Die Liste der Assemblyreferenzen, die an das bgen-Tool (Bindungsgenerator) übergeben werden sollen.

In der Regel wird dies automatisch behandelt, indem Referenzen stattdessen als ProjectReference- oder PackageReference-Elemente hinzugefügt werden.

BundleResource

Dateien, die in das App-Bündel kopiert werden sollen.

Siehe auch:

CodesignBundle

Zusätzliche Pakete innerhalb der abschließenden App, die signiert werden sollen.

Der Zweck besteht darin, die Signierung in der App auf alle anderen Pakete zu erweitern, die manuell kopiert werden (z. B. über benutzerdefinierte MSBuild-Ziele während des Builds) und in das App-Paket aufgenommen werden.

Der einzuschließende Pfad ist der Pfad zum App-Bündel, das im Haupt-App-Bündel signiert werden soll, einschließlich des App-Bündelnamens selbst.

Beispiel:

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

Es gibt mehrere Metadaten, die für das CodesignBundle Element festgelegt werden können, um den Signaturvorgang zu steuern.

Beispiel:

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

Wenn Metadaten nicht festgelegt sind, wird stattdessen die entsprechende Eigenschaft verwendet (zum Beispiel, wenn die CodesignSigningKey-Metadaten nicht festgelegt sind, wird der Wert der CodesignSigningKey-Eigenschaft verwendet).

Collada

Eine Objektgruppe, die Collada-Objekte enthält.

Inhalt

Ressourcen (Dateien), die in das App-Bündel kopiert werden sollen.

Sie werden im folgenden Verzeichnis im App-Bündel platziert:

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

Es ist möglich, die Link-Metadaten so festzulegen, dass sie einen Pfad relativ zum Zielverzeichnis angeben, um den Speicherort im App-Paket zu ändern.

Beispiel:

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

würde die Datei an folgendem Speicherort platzieren:

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

Siehe auch:

CoreMLModel

Eine Elementgruppe, die CoreML-Modelle enthält.

Benutzerdefinierte Berechtigungen

Eine Elementgruppe, die benutzerdefinierte Berechtigungen enthält, die der App hinzugefügt werden sollen.

Diese Berechtigungen werden zuletzt verarbeitet und überschreiben alle anderen Berechtigungen, entweder aus der Datei, die mit der Eigenschaft CodesignEntitlements angegeben ist, oder aus dem verwendeten Bereitstellungsprofil (sofern vorhanden).

Dies ist das Format:

<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

Eine Artikelgruppe, die iTunes-Grafiken für IPAs enthält.

Gilt nur für iOS- und tvOS-Projekte.

iTunes-Metadaten

Gilt nur für iOS- und tvOS-Projekte.

ImageAsset

Eine Elementgruppe, die Bildmaterial enthält.

Schnittstellendefinition

Eine Elementgruppe, die Schnittstellendefinitionen (*.xib- oder *.storyboard-Dateien) enthält.

Linkbeschreibung

Zusätzliche XML-Dateien, die an den Trimmer übergeben werden sollen.

Dies entspricht der Einstellung TrimmerRootDescriptor.

LinkerArgument

Zusätzliche Argumente, die beim Kompilieren der Hauptanwendung für eine App oder App-Erweiterung an den systemeigenen Linkerld übergeben werden sollen.

Beispiel 1 (zum Verknüpfen mit dem AudioToolbox Framework):

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

Beispiel 2 (zum Verknüpfen mit einer benutzerdefinierten statischen Bibliothek):

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

Jedes Argument für den Linker ist ein separates LinkerArgument, und Argumente dürfen nicht in Anführungszeichen gesetzt werden.

Alle Argumente werden an den systemeigenen Linker in der Reihenfolge übergeben, in der sie der LinkerArgument Elementgruppe hinzugefügt werden, aber die genaue Position innerhalb aller Argumente, die an den systemeigenen Linker übergeben werden, ist nicht definiert.

Die systemeigene ausführbare Datei wird automatisch neu erstellt, wenn sich die Gruppe von LinkerArgument zwischen den Builds ändert, aber wenn ein LinkerArgument auf eine Datei verweist (z. B. eine statische Bibliothek) und diese Datei sich ändert, wird diese Änderung nicht erkannt und die systemeigene ausführbare Datei wird nicht automatisch neu erstellt.

Metall

Eine Elementgruppe, die Metallressourcen enthält.

ZusätzlicheLaufargumenteFürMlaunch

Eine Elementgruppe, die zusätzliche Argumente für das mlaunch Tool enthält, die zum Starten von Apps auf dem Gerät und im Simulator verwendet wird. Das mlaunch Tool gilt als internes Werkzeug, und das Verhalten kann sich jederzeit ändern.

Hinweis

Dies gilt nur beim Starten der App über die Befehlszeile (dotnet run oder dotnet build -t:Run), nicht beim Starten aus der IDE.

MlaunchEnvironmentVariables

Eine Elementgruppe, die Umgebungsvariablen enthält, die beim Starten der App entweder auf dem Gerät oder im Simulator festgelegt werden.

Hinweis

Dies gilt nur beim Starten der App über die Befehlszeile (dotnet run oder dotnet build -t:Run), nicht beim Starten aus der IDE.

NativeReference

Eine Elementgruppe, die systemeigene Verweise enthält, mit denen beim Erstellen der nativen ausführbaren Datei verknüpft oder verknüpft werden soll.

Objc-Bindungs-API-Definition

Eine Elementgruppe, die alle API-Definitionen für Bindungsprojekte auflistet.

ObjcBindingCoreSource

Eine Elementgruppe, die den gesamten Kernquellcode zum Binden von Projekten auflistet.

ObjCBindingNativeFramework

Eine Elementgruppe, die alle systemeigenen Frameworks auflistet, die in einem Bindungsprojekt enthalten sein sollten.

Diese Elementgruppe ist veraltet. Bitte verwenden Sie stattdessen NativeReference.

ObjcBindingNativeLibrary

Eine Elementgruppe, die alle nativen Bibliotheken auflistet, die in einem Binding-Projekt enthalten sein sollten.

Diese Elementgruppe ist veraltet. Bitte verwenden Sie stattdessen NativeReference.

Teil-App-Manifest

PartialAppManifest kann verwendet werden, um zusätzliche partielle App-Manifeste hinzuzufügen, die mit dem Haupt-App-Manifest (Info.plist) zusammengeführt werden.

Alle Werte in den partiellen App-Manifesten überschreiben Werte im Haupt-App-Manifest, es sei denn, die Overwrite Metadaten werden auf falsefestgelegt.

Wenn derselbe Wert in mehreren partiellen App-Manifesten angegeben wird, ist nicht bestimmt, welcher verwendet wird.

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

Wenn der Entwickler ein Ziel ausführen muss, um zu berechnen, was der PartialAppManifest Elementgruppe hinzugefügt werden soll, ist es möglich, sicherzustellen, dass dieses Ziel ausgeführt wird, bevor die PartialAppManifest Elemente ausgeführt werden, indem sie der eigenschaft CollectAppManifestsDependsOn hinzugefügt werden:

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

SkipCodesignItems

Eine Elementgruppe, die Dateien oder Verzeichnisse im App-Bündel angibt, die nicht signiert werden sollen.

Der Zweck besteht darin, das Signieren von Dateien und Verzeichnissen auszuschließen, die manuell (z. B. über benutzerdefinierte MSBuild-Ziele in der Projektdatei) in das App-Bündel kopiert werden und die bereits signiert sind.

Der einzuschließende Pfad ist der Pfad zur Datei oder zum Verzeichnis relativ zum Stammverzeichnis des App-Pakets.

Beispiel:

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

Gilt für alle Plattformen.

XcodeProject

<XcodeProject> kann verwendet werden, um die Ausgaben von Xcode-Framework-Projekten zu erzeugen und zu nutzen, die in Xcode oder anderswo erstellt wurden.

Die Include Metadaten sollten auf den Pfad der zu erstellenden XCODEPROJ-Datei verweisen.

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

Die folgenden MSBuild-Metadaten werden unterstützt:

  • %(SchemeName): Der Name des Build-Schemas oder Ziels, das zum Erstellen des Projekts verwendet werden soll.

  • %(Configuration): Der Name der Konfiguration, die zum Erstellen des Projekts verwendet werden soll. Der Standardwert ist Release.

  • %(CreateNativeReference): Die XCFRAMEWORK-Ausgabedateien werden dem Projekt als @(NativeReference) hinzugefügt. Metadaten, die von @(NativeReference) wie %(Kind), %(Frameworks)oder %(SmartLink) unterstützt werden, werden weitergeleitet, wenn sie festgelegt sind. Der Standardwert ist true.

  • %(OutputPath): Kann so festgelegt werden, dass der XCARCHIVE- und XCFRAMEWORK-Ausgabepfad des Xcode-Projekts außer Kraft gesetzt wird. Der Standardwert ist $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Diese Buildaktion wurde in .NET 9 eingeführt.