Udostępnij przez


Tworzenie elementów dla systemów iOS, Mac Catalyst, macOS i tvOS

Elementy kompilacji kontrolują sposób tworzenia projektów aplikacji lub bibliotek platformy .NET dla systemów iOS, Mac Catalyst, macOS i tvOS.

DodatkoweRozszerzeniaAplikacji

Grupa elementów zawierająca wszelkie dodatkowe rozszerzenia aplikacji do skopiowania do pakietu aplikacji.

Można ustawić następujące metadane:

  • Uwzględnij: ścieżka do katalogu kompilacji dla projektu rozszerzenia aplikacji Xcode.
  • Nazwa: nazwa rozszerzenia.
  • BuildOutput: Ta wartość jest dołączana do wartości Include, aby określić lokalizację pakietu appex. Zazwyczaj Xcode umieszcza kompilacje dla symulatora i urządzenia w różnych lokalizacjach, co pozwala na utworzenie jednego wpisu AdditionalAppExtensions wskazującego na dwa różne pakiety appex, w zależności od tego, czy kompilacja jest przeznaczona dla symulatora, czy urządzenia.
  • CodesignEntitlements: Określa, które uprawnienia należy wykorzystać podczas podpisywania rozszerzenia aplikacji. Wartość domyślna to "%(Name).entitlements" w katalogu kompilacji 'Include' (jeśli ten plik istnieje).
  • CodesignWarnIfNoEntitlements: Ostrzeżenie zostanie wygenerowane, jeśli wartość CodesignEntitlements nie zostanie ustawiona. Tę właściwość można ustawić tak, false aby wyciszyć to ostrzeżenie.

Przykład:

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

Przykładowe rozwiązanie można znaleźć tutaj: TestApplication.

Alternatywna ikona aplikacji

Grupę elementów AlternateAppIcon można użyć do określania alternatywnych ikon aplikacji.

Metadane Include muszą wskazywać nazwę pliku .appiconset (dla systemów iOS, macOS i Mac Catalyst) lub zasobu obrazu .imagestack (w przypadku systemu tvOS) wewnątrz katalogu zasobów.

Przykład:

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

Zobacz również:

AtlasTexture

Grupa elementów zawierająca tekstury atlasu.

BGenReferencePath

Lista odwołań do zestawów do przekazania do narzędzia bgen (generator powiązań).

Zazwyczaj jest to obsługiwane automatycznie przez dodanie odwołań w postaci elementów ProjectReference lub PackageReference.

BundleResource

Pliki do skopiowania do pakietu aplikacji.

Zobacz również:

CodesignBundle

Dodatkowe pakiety wewnątrz ostatecznej aplikacji, które powinny być podpisane.

Celem jest włączenie do podpisywania aplikacji wszystkich innych pakietów, które są kopiowane ręcznie (na przykład poprzez niestandardowe cele MSBuild podczas kompilacji) do pakietu aplikacji.

Ścieżka, którą należy uwzględnić, to ścieżka do pakietu aplikacji, który ma zostać podpisany w ramach głównego pakietu aplikacji, łącznie z samą nazwą pakietu aplikacji.

Przykład:

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

Istnieje kilka elementów metadanych, które można ustawić w elemencie CodesignBundle w celu kierowania sposobu podpisywania:

Przykład:

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

Wszystkie metadane, które nie są ustawione, będą używać odpowiedniej właściwości (na przykład jeśli metadane CodesignSigningKey nie są ustawione, zamiast tego zostanie użyta wartość właściwości CodesignSigningKey).

Collada

Grupa elementów zawierająca zasoby Collada.

Zawartość

Zasoby (pliki) do skopiowania do pakietu aplikacji.

Zostaną one umieszczone w następującym katalogu w pakiecie aplikacji:

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

Można ustawić metadane Link na ścieżkę względem katalogu docelowego, aby zmienić lokalizację w pakiecie aplikacji.

Przykład:

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

umieści plik w następującej lokalizacji:

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

Zobacz również:

CoreMLModel

Grupa elementów zawierająca modele CoreML.

Niestandardowe Uprawnienia

Grupa elementów zawierająca uprawnienia niestandardowe do dodania do aplikacji.

Te uprawnienia są przetwarzane ostatnio i zastąpią wszelkie inne uprawnienia z pliku określonego przy użyciu właściwości CodesignEntitlements lub z używanego profilu aprowizacji (jeśli istnieje).

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

Grupa elementów zawierająca grafikę iTunes dla plików IPA.

Dotyczy tylko projektów systemów iOS i tvOS.

ITunesMetadata

Dotyczy tylko projektów systemów iOS i tvOS.

ImageAsset

Grupa elementów zawierająca zasoby obrazów.

InterfejsDefinicja

Grupa elementów zawierająca definicje interfejsu (pliki *.xib lub *.storyboard).

OpisLinku

Dodatkowe pliki XML, które mają być przekazywane do trymeru.

Jest to takie samo, jak ustawienie TrimmerRootDescriptor.

LinkerArgument

Dodatkowe argumenty do przekazania do natywnego linkera (ld) podczas kompilowania głównego pliku wykonywalnego aplikacji lub jej rozszerzenia.

Przykład 1 (aby połączyć się ze strukturą AudioToolbox ):

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

Przykład 2 (aby połączyć się z niestandardową biblioteką statyczną):

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

Każdy argument linkera jest odrębnym LinkerArgumentargumentem, a argumenty nie mogą być cytowane.

Wszystkie argumenty zostaną przekazane do konsolidatora natywnego w kolejności, w której zostaną dodane do LinkerArgument grupy elementów, ale dokładna lokalizacja we wszystkich argumentach przekazanych do konsolidatora natywnego nie jest zdefiniowana.

Natywny plik wykonywalny zostanie automatycznie przebudowany, jeśli zestaw LinkerArgument zmienia się między kompilacjami, ale jeśli LinkerArgument odnosi się do pliku (np. bibliotekę statyczną), i ten plik ulega zmianie, ta zmiana nie zostanie wykryta, a natywny plik wykonywalny nie zostanie w takim przypadku automatycznie przebudowany.

Metal

Grupa elementów zawierająca zasoby metalowe.

MlaunchDodatkoweArgumenty

Grupa elementów zawierająca dodatkowe argumenty dla narzędzia mlaunch, które jest używane do uruchamiania aplikacji na urządzeniu oraz w symulatorze. Narzędzie mlaunch jest uznawane za narzędzie wewnętrzne, a zachowanie może ulec zmianie w dowolnym momencie.

Uwaga / Notatka

Ma to zastosowanie tylko w przypadku uruchamiania aplikacji z poziomu wiersza polecenia (dotnet run lub dotnet build -t:Run), a nie podczas uruchamiania ze środowiska IDE.

MlaunchEnvironmentVariables

Grupa elementów zawierająca zmienne środowiskowe, które zostaną ustawione podczas uruchamiania aplikacji na urządzeniu lub w symulatorze.

Uwaga / Notatka

Ma to zastosowanie tylko w przypadku uruchamiania aplikacji z poziomu wiersza polecenia (dotnet run lub dotnet build -t:Run), a nie podczas uruchamiania ze środowiska IDE.

NativeReference

Grupa elementów zawierająca wszelkie odwołania natywne, które powinny być uwzględnione lub powiązane podczas tworzenia natywnego pliku wykonywalnego.

ObjcBindingApiDefinition

Grupa elementów zawierająca listę wszystkich definicji API dla projektów powiązaniowych.

ObjcBindingCoreSource

Grupa elementów zawierająca wszystkie podstawowe kody źródłowe dla projektów wiążących.

ObjCBindingNativeFramework

Grupa elementów zawierająca listę wszystkich natywnych frameworków, które powinny zostać uwzględnione w projekcie wiążącym.

Ta grupa elementów jest przestarzała, zamiast tego użyj NativeReference.

BibliotekaNatywnaObjcBinding

Grupa elementów zawierająca listę wszystkich bibliotek natywnych, które powinny być uwzględnione w projekcie powiązania.

Ta grupa elementów jest przestarzała, zamiast tego użyj NativeReference.

PartialAppManifest (Częściowy Manifest Aplikacji)

PartialAppManifest można użyć do dodawania dodatkowych częściowych manifestów aplikacji, które zostaną scalone z głównym manifestem aplikacji (Info.plist).

Wszystkie wartości w częściowych manifestach aplikacji zastąpią wartości w manifeście głównej aplikacji, chyba że Overwrite metadane są ustawione na wartość false.

Jeśli ta sama wartość jest określona w wielu częściowych manifestach aplikacji, nie jest określona, która będzie używana.

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

Jeśli deweloper musi wykonać cel, aby obliczyć, co należy dodać do grupy elementów PartialAppManifest, można upewnić się, że ten cel jest wykonany przed przetworzeniem elementów PartialAppManifest, dodając go do właściwości CollectAppManifestsDependsOn.

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

SkipCodesignItems

Grupa elementów określająca pliki lub katalogi w pakiecie aplikacji, które nie powinny być podpisane.

Celem jest wykluczenie z procesu podpisywania tych plików i katalogów, które są kopiowane ręcznie (na przykład poprzez niestandardowe cele MSBuild w pliku projektu) do pakietu aplikacji, a które są już podpisane.

Ścieżka do uwzględnienia to ścieżka do pliku lub katalogu względem katalogu głównego pakietu aplikacji.

Przykład:

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

Dotyczy wszystkich platform.

XcodeProject

<XcodeProject> można użyć do kompilowania i korzystania z danych wyjściowych projektów platformy Xcode utworzonych w środowisku Xcode lub elsewehere.

Metadane Include powinny wskazywać ścieżkę pliku XCODEPROJ do skompilowania.

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

Obsługiwane są następujące metadane MSBuild:

  • %(SchemeName): nazwa schematu kompilacji lub elementu docelowego, który ma być używany do kompilowania projektu.

  • %(Configuration): nazwa konfiguracji, która ma być używana do kompilowania projektu. Wartość domyślna to Release.

  • %(CreateNativeReference): wyjściowe pliki XCFRAMEWORK zostaną dodane jako @(NativeReference) do projektu. Metadane obsługiwane przez @(NativeReference) takie jak %(Kind), %(Frameworks)lub %(SmartLink) będą przekazywane w przypadku ustawienia. Wartość domyślna to true.

  • %(OutputPath): można ustawić tak, aby zastąpić ścieżkę wyjściową XCARCHIVE i XCFRAMEWORK projektu Xcode. Wartość domyślna to $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Ta akcja kompilacji została wprowadzona na platformie .NET 9.