Delen via


Items bouwen voor iOS, Mac Catalyst, macOS en tvOS

Bouwitems bepalen hoe .NET voor iOS-, Mac Catalyst-, macOS- en tvOS-toepassingen of -bibliotheekprojecten worden gebouwd.

AanvullendeAppExtensies

Een itemgroep met eventuele extra app-extensies die u naar de app-bundel kunt kopiëren.

De volgende metagegevens kunnen worden ingesteld:

  • Neem op: het pad naar de buildmap voor het Xcode-app-extensieproject.
  • Naam: De naam van de extensie.
  • BuildOutput: Deze waarde wordt toegevoegd aan de Include waarde om de locatie van de appex-bundel te produceren. Normaal gesproken plaatst Xcode simulator- en apparaatbuilds op verschillende locaties, dus dit kan worden gebruikt om één AdditionalAppExtensions ingang te hebben die verwijst naar twee verschillende appex-bundels, afhankelijk van het bouwen voor de simulator of het apparaat.
  • CodesignEntitlements: Hiermee geeft u de rechten op die moeten worden gebruikt bij het ondertekenen van de app-extensie. De standaardwaarde is '%(Name).entitlements' in de buildmap 'Include' (als dit bestand bestaat).
  • CodesignWarnIfNoEntitlements: er wordt een waarschuwing geproduceerd als er geen CodesignEntitlements waarde is ingesteld. Deze eigenschap kan worden ingesteld op false om deze waarschuwing te onderdrukken.

Voorbeeld:

<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 vindt u een voorbeeldoplossing: TestApplication.

AlternatieveAppIcon

De AlternateAppIcon itemgroep kan worden gebruikt om alternatieve app-pictogrammen op te geven.

De Include metagegevens moeten verwijzen naar de bestandsnaam van een .appiconset (voor iOS, macOS en Mac Catalyst) of .imagestack (voor tvOS) afbeeldingsresource in een assetcatalogus.

Voorbeeld:

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

Zie ook:

AtlasTexture

Een itemgroep die atlastextuur bevat.

BGenReferencePath

De lijst met assemblyverwijzingen die moeten worden doorgegeven aan het hulpprogramma bgen (bindinggenerator).

Meestal wordt dit automatisch afgehandeld door referenties toe te voegen als ProjectReference- of PackageReference-items.

BundleResource

Bestanden die moeten worden gekopieerd naar de app-bundel.

Zie ook:

CodesignBundle

Extra pakketten in de uiteindelijke app die moeten worden ondertekend.

Het doel is om in de appsigning alle andere bundels op te nemen die handmatig worden gekopieerd (bijvoorbeeld via aangepaste MSBuild-doelen tijdens het bouwproces) naar de app-bundel.

Het pad dat moet worden opgenomen, is het pad naar de app-bundel om u aan te melden in de hoofd-app-bundel, inclusief de naam van de app-bundel zelf.

Voorbeeld:

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

Er zijn verschillende stukjes metagegevens die kunnen worden ingesteld op het CodesignBundle item om te bepalen hoe ondertekening plaatsvindt:

Voorbeeld:

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

Alle metagegevens die niet zijn ingesteld, gebruiken in plaats daarvan de bijbehorende eigenschap (bijvoorbeeld als de CodesignSigningKey metagegevens niet zijn ingesteld, wordt in plaats daarvan de waarde van de eigenschap CodesignSigningKey gebruikt.)

Collada

Een itemgroep die collada-assets bevat.

Inhoud

Resources (bestanden) die moeten worden gekopieerd naar de app-bundel.

Ze worden in de volgende map in de app-bundel geplaatst:

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

Het is mogelijk om de Link metagegevens in te stellen op een pad ten opzichte van de doelmap om de locatie binnen de app-bundel te veranderen.

Voorbeeld:

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

plaatst het bestand op de volgende locatie:

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

Zie ook:

CoreMLModel

Een itemgroep die CoreML-modellen bevat.

Aangepaste Toestemmingen

Een itemgroep die aangepaste rechten bevat die aan de app moeten worden toegevoegd.

Deze rechten worden als laatste verwerkt en overschrijven eventuele andere rechten, ofwel uit het bestand dat is opgegeven met de eigenschap CodesignEntitlements , of van het inrichtingsprofiel dat in gebruik is (indien van toepassing).

Dit is de indeling:

<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

Een itemgroep met iTunes-illustraties voor IPA's.

Alleen van toepassing op iOS- en tvOS-projecten.

iTunesMetadata

Alleen van toepassing op iOS- en tvOS-projecten.

ImageAsset

Een itemgroep die afbeeldingsassets bevat.

Interface-definitie

Een itemgroep met interfacedefinities (*.xib- of *.storyboard-bestanden).

Koppelingsbeschrijving

Extra XML-bestanden die moeten worden doorgegeven aan de trimmer.

Dit is hetzelfde als het instellen van TrimmerRootDescriptor.

LinkerArgument

Aanvullende argumenten die moeten worden doorgegeven aan de native linker (ld) bij het compileren van het belangrijkste uitvoerbare bestand voor een app of appextensie.

Voorbeeld 1 (om te koppelen aan het AudioToolbox framework):

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

Voorbeeld 2 (om een koppeling te maken met een aangepaste statische bibliotheek):

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

Elk argument aan de linker is een afzonderlijk LinkerArgumentargument en argumenten mogen niet worden geciteerd.

Alle argumenten worden doorgegeven aan de systeemeigen linker in de volgorde waarin ze worden toegevoegd aan de LinkerArgument itemgroep, maar de exacte locatie binnen alle argumenten die aan de systeemeigen linker worden doorgegeven, is niet gedefinieerd.

Het systeemeigen uitvoerbare bestand wordt automatisch opnieuw opgebouwd als de set LinkerArgument tussen builds wijzigt, maar als een LinkerArgument naar een bestand verwijst (zoals een statische bibliotheek) en dat bestand wordt gewijzigd, wordt deze wijziging niet gedetecteerd en wordt het systeemeigen uitvoerbare bestand niet automatisch opnieuw opgebouwd.

Metaal

Een itemgroep die metalen assets bevat.

MlaunchAdditionalArguments

Een itemgroep die extra argumenten bevat voor het mlaunch hulpprogramma, dat wordt gebruikt om apps op het apparaat en in de simulator te starten. Het mlaunch gereedschap wordt beschouwd als een intern instrument en gedrag kan op elk gewenst moment veranderen.

Opmerking

Dit geldt alleen bij het starten van de app vanaf de opdrachtregel (dotnet run of dotnet build -t:Run), niet bij het starten vanuit de IDE.

Omgevingsvariabelen voor Mlaunch

Een itemgroep die omgevingsvariabelen bevat die worden ingesteld wanneer de app wordt gestart, op het apparaat of in de simulator.

Opmerking

Dit geldt alleen bij het starten van de app vanaf de opdrachtregel (dotnet run of dotnet build -t:Run), niet bij het starten vanuit de IDE.

NativeReference

Een itemgroep die systeemeigen verwijzingen bevat die moeten worden gekoppeld aan of gekoppeld bij het bouwen van het systeemeigen uitvoerbare bestand.

ObjcBindingApiDefinition

Een itemgroep met alle API-definities voor bindingsprojecten.

ObjcBindingCoreSource

Een itemgroep met alle kernbroncode voor bindingsprojecten.

ObjCBindingNativeFramework

Een itemgroep met alle systeemeigen frameworks die moeten worden opgenomen in een bindingsproject.

Deze itemgroep is afgeschaft. Gebruik in plaats daarvan NativeReference .

ObjcBindingNativeLibrary

Een itemgroep met alle systeemeigen bibliotheken die moeten worden opgenomen in een bindingsproject.

Deze itemgroep is afgeschaft. Gebruik in plaats daarvan NativeReference .

GedeeltelijkeAppManifest

PartialAppManifest kan worden gebruikt om aanvullende gedeeltelijke app-manifesten toe te voegen die worden samengevoegd met het hoofd-app-manifest (Info.plist).

Waarden in de gedeeltelijke app-manifesten overschrijven waarden in het hoofd-app-manifest, tenzij de metagegevens van de Overwrite zijn ingesteld op false.

Als dezelfde waarde is opgegeven in meerdere gedeeltelijke app-manifesten, is deze niet bepaald welke waarde wordt gebruikt.

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

Als de ontwikkelaar een doel moet uitvoeren om te berekenen wat er moet worden toegevoegd aan de PartialAppManifest itemgroep, is het mogelijk om ervoor te zorgen dat dit doel wordt uitgevoerd voordat de PartialAppManifest items worden verwerkt door deze toe te voegen aan de eigenschap CollectAppManifestsDependsOn:

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

SkipCodesignItems

Een itemgroep die bestanden of mappen in de app-bundel opgeeft die niet mogen worden ondertekend.

Het doel is om bestanden en mappen uit te sluiten van ondertekening die handmatig worden gekopieerd (bijvoorbeeld via aangepaste MSBuild-doelen in het projectbestand) naar de app-bundel en die al zijn ondertekend.

Het pad dat moet worden opgenomen, is het pad naar het bestand of de map ten opzichte van de root van de app-bundel.

Voorbeeld:

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

Van toepassing op alle platforms.

XcodeProject

<XcodeProject> kan worden gebruikt voor het bouwen en gebruiken van de uitvoer van Xcode-frameworkprojecten die zijn gemaakt in Xcode of elsewehere.

De Include metagegevens moeten verwijzen naar het pad van het XCODEPROJ-bestand dat moet worden gebouwd.

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

De volgende MSBuild-metagegevens worden ondersteund:

  • %(SchemeName): de naam van het buildschema of doel dat moet worden gebruikt om het project te bouwen.

  • %(Configuration): de naam van de configuratie die moet worden gebruikt om het project te bouwen. De standaardwaarde is Release.

  • %(CreateNativeReference): XCFRAMEWORK-uitvoerbestanden worden als @(NativeReference) aan het project toegevoegd. Metagegevens die worden ondersteund door @(NativeReference), zoals %(Kind), %(Frameworks)of %(SmartLink), worden doorgestuurd indien ingesteld. De standaardwaarde is true.

  • %(OutputPath): kan worden ingesteld om het XCARCHIVE- en XCFRAMEWORK-uitvoerpad van het Xcode-project te overschrijven. De standaardwaarde is $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Deze buildactie is geïntroduceerd in .NET 9.