Bagikan melalui


Membuat item untuk iOS, Mac Catalyst, macOS, dan tvOS

Item build mengontrol bagaimana proyek aplikasi atau pustaka .NET untuk iOS, Mac Catalyst, macOS, dan tvOS dibangun.

EkstensiAplikasiTambahan

Grup item yang berisi ekstensi aplikasi tambahan untuk disalin ke dalam app bundle.

Metadata berikut dapat diatur:

  • Sertakan: Jalur ke direktori build untuk proyek ekstensi aplikasi Xcode.
  • Nama: Nama ekstensi.
  • BuildOutput: Nilai ini ditambahkan ke nilai Include untuk menghasilkan lokasi bundel appex. Biasanya Xcode akan menempatkan hasil build untuk simulator dan perangkat di lokasi yang berbeda, sehingga ini bisa digunakan untuk memiliki satu entri AdditionalAppExtensions yang menunjuk ke dua bundel appex yang berbeda, tergantung pada apakah Anda sedang membangun untuk simulator atau perangkat.
  • CodesignEntitlements: Menentukan entitelmen yang akan digunakan saat penandatanganan ekstensi aplikasi. Nilai defaultnya adalah '%(Name).entitlements' di direktori build 'Include' (jika file ini ada).
  • CodesignWarnIfNoEntitlements: Peringatan akan dihasilkan jika CodesignEntitlements nilai tidak ditetapkan. Properti ini dapat diatur ke false untuk membungkam peringatan ini.

Contoh:

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

Contoh solusi dapat ditemukan di sini: TestApplication.

IkonAplikasiAlternatif

Grup item AlternateAppIcon dapat digunakan untuk menentukan ikon aplikasi alternatif.

Metadata Include harus menunjuk ke nama file .appiconset (untuk sumber daya gambar iOS, macOS, dan Mac Catalyst) atau .imagestack (untuk tvOS) di dalam katalog aset.

Contoh:

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

Lihat juga:

AtlasTexture

Grup item yang berisi tekstur atlas.

BGenReferencePath

Daftar referensi perakitan untuk diteruskan ke alat bgen (generator pengikatan).

Biasanya ini ditangani secara otomatis dengan menambahkan referensi sebagai item ProjectReference atau PackageReference sebagai gantinya.

BundleResource

File yang akan disalin ke bundel aplikasi.

Lihat juga:

CodesignBundle

Paket-paket tambahan di dalam aplikasi akhir yang harus ditandatangani.

Tujuannya adalah untuk menyertakan dalam penandatanganan aplikasi bundel lain yang disalin secara manual (misalnya melalui target MSBuild kustom selama proses pembangunan) ke app bundle.

Jalur yang akan disertakan adalah jalur ke bundel aplikasi untuk ditandatangani di dalam bundel aplikasi utama, termasuk nama bundel aplikasi itu sendiri.

Contoh:

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

Ada beberapa bagian metadata yang dapat diatur pada item CodesignBundle untuk mengarahkan bagaimana penandatanganan terjadi:

Contoh:

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

Metadata apa pun yang tidak ditetapkan akan menggunakan properti yang sesuai sebagai gantinya (misalnya jika metadata CodesignSigningKey tidak ditetapkan, nilai properti CodesignSigningKey akan digunakan sebagai gantinya.)

Collada

Kelompok item yang berisi aset COLLADA.

Konten

Sumber daya (file) yang akan disalin ke bundel aplikasi.

Mereka akan ditempatkan di direktori berikut di dalam app bundle:

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

Anda dapat mengatur metadata Link ke jalur yang relatif terhadap direktori target untuk mengubah lokasi di app bundle.

Contoh:

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

akan menempatkan file di lokasi berikut:

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

Lihat juga:

CoreMLModel

Grup item yang berisi model CoreML.

Pemberian Izin Kustom

Grup item yang berisi pemberian izin kustom untuk ditambahkan ke aplikasi.

Penetapan ini diproses terakhir, dan akan mengambil alih pemberian izin lainnya, baik dari file yang ditentukan dengan properti CodesignEntitlements, atau dari profil provisi yang digunakan (jika ada).

Ini adalah formatnya:

<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

Grup item yang berisi karya seni iTunes untuk IPAs.

Hanya berlaku untuk proyek iOS dan tvOS.

iTunesMetadata

Hanya berlaku untuk proyek iOS dan tvOS.

ImageAsset

Grup item yang berisi aset gambar.

InterfaceDefinition

Grup item yang berisi definisi antarmuka (file*.xib atau *.storyboard).

DeskripsiTautan

File xml tambahan untuk diteruskan ke pemangkas.

Ini sama dengan mengatur TrimmerRootDescriptor.

LinkerArgument

Argumen tambahan untuk diteruskan ke linker asli (ld) saat mengkompilasi eksekusi utama aplikasi atau ekstensi aplikasi.

Contoh 1 (untuk menautkan AudioToolbox dengan kerangka kerja):

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

Contoh 2 (untuk menautkan dengan pustaka statis kustom):

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

Setiap argumen untuk linker adalah LinkerArgument, terpisah dan tidak boleh dikutip.

Semua argumen akan diteruskan ke linker asli dalam urutan ditambahkan ke LinkerArgument grup item, tetapi lokasi yang tepat dalam semua argumen yang diteruskan ke linker asli tidak ditentukan.

Executable asli akan dibangun kembali secara otomatis jika kumpulan LinkerArgument itu berubah di antara build, tetapi jika LinkerArgument menunjuk ke file (seperti pustaka statis) dan file tersebut berubah, perubahan ini tidak akan terdeteksi dan executable asli tidak akan dibangun kembali secara otomatis.

Logam

Grup item yang berisi aset logam.

MlaunchAdditionalArguments

Sebuah grup item yang berisi argumen tambahan untuk alat mlaunch, yang digunakan untuk meluncurkan aplikasi di perangkat dan dalam simulator. Alat mlaunch ini dianggap sebagai alat internal, dan perilaku dapat berubah kapan saja.

Nota

Ini hanya berlaku saat meluncurkan aplikasi dari baris perintah (dotnet run atau dotnet build -t:Run), bukan saat meluncurkan dari IDE.

MlaunchEnvironmentVariables

Grup item yang berisi variabel lingkungan yang akan diatur saat aplikasi diluncurkan, baik di perangkat atau di simulator.

Nota

Ini hanya berlaku saat meluncurkan aplikasi dari baris perintah (dotnet run atau dotnet build -t:Run), bukan saat meluncurkan dari IDE.

NativeReference

Grup item yang berisi referensi lokal yang harus ditautkan ke dalam atau dengan saat membangun executable lokal.

ObjcBindingApiDefinition

Grup item yang mencantumkan semua definisi API untuk proyek pengikatan.

ObjcBindingCoreSource

Grup item yang mencantumkan semua kode sumber inti untuk proyek pengikatan.

Kerangka Kerja Asli ObjCBinding

Grup item yang mencantumkan semua framework asli yang harus disertakan dalam proyek pengikatan.

Grup item ini tidak digunakan lagi, gunakan NativeReference sebagai gantinya.

ObjcBindingNativeLibrary (Perpustakaan Asli ObjcBinding)

Grup item yang mencantumkan semua pustaka asli yang harus disertakan dalam proyek pengikatan.

Grup item ini tidak digunakan lagi, gunakan NativeReference sebagai gantinya.

Manifest Aplikasi Parsial

PartialAppManifest dapat digunakan untuk menambahkan manifes aplikasi parsial tambahan yang akan digabungkan dengan manifes aplikasi utama (Info.plist).

Nilai apa pun dalam manifes aplikasi parsial akan mengambil alih nilai dalam manifes aplikasi utama kecuali metadata Overwrite diatur ke false.

Jika nilai yang sama ditentukan dalam beberapa manifes aplikasi parsial, nilai tersebut tidak ditentukan yang akan digunakan.

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

Jika pengembang perlu menjalankan target untuk menghitung apa yang harus ditambahkan ke grup item PartialAppManifest, dimungkinkan untuk memastikan target ini dijalankan sebelum item PartialAppManifest diproses dengan menambahkannya ke properti CollectAppManifestsDependsOn:

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

SkipCodesignItems

Grup item yang menentukan file atau direktori dalam app bundle yang tidak boleh ditandatangani.

Tujuannya adalah untuk mengecualikan penandatanganan pada file dan direktori yang disalin secara manual (misalnya melalui target MSBuild kustom dalam file proyek) ke dalam bundel aplikasi, yang mana sudah ditandatangani.

Jalur yang akan disertakan adalah jalur ke file atau direktori yang relatif terhadap akar bundel aplikasi.

Contoh:

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

Berlaku untuk semua platform.

XcodeProject

<XcodeProject> dapat digunakan untuk membangun dan menggunakan output proyek kerangka kerja Xcode yang dibuat di Xcode atau di tempat lain.

Metadata Include harus menunjuk ke jalur file XCODEPROJ yang akan dibangun.

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

Metadata MSBuild berikut didukung:

  • %(SchemeName): Nama skema build atau target yang harus digunakan untuk membangun proyek.

  • %(Configuration): Nama konfigurasi yang digunakan untuk membangun proyek. Nilai defaultnya adalah Release.

  • %(CreateNativeReference): File XCFRAMEWORK output akan ditambahkan sebagai @(NativeReference) ke proyek. Metadata yang didukung oleh @(NativeReference) seperti %(Kind), %(Frameworks), atau %(SmartLink) akan diteruskan jika diatur. Nilai defaultnya adalah true.

  • %(OutputPath): Dapat diatur untuk mengambil alih jalur output XCARCHIVE dan XCFRAMEWORK dari proyek Xcode. Nilai defaultnya adalah $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}.

Tindakan build ini diperkenalkan di .NET 9.