Bagikan melalui


Membangun properti untuk iOS, Mac Catalyst, macOS, dan tvOS

Properti MSBuild mengontrol perilaku target . Mereka ditentukan dalam file proyek, misalnya MyApp.csproj, dalam MSBuild PropertyGroup.

AltoolPath

Jalur lengkap ke alat altool.

Perilaku defaultnya adalah menggunakan xcrun altool.

AppBundleResourcePrefix

Direktori tempat sumber daya disimpan (awalan ini akan dihapus saat menyalin sumber daya ke bundel aplikasi).

Jika tidak diatur secara eksplisit, properti ini akan mewarisi nilainya dari properti awalan sumber daya khusus platform (IPhoneResourcePrefix, MonoMacResourcePrefix, atau XamMacResourcePrefix tergantung pada platform).

Sumber Daya

AppBundleDir

Lokasi bundel aplikasi bawaan.

AppBundleExtraOptions

Argumen tingkat lanjut tambahan untuk pembuatan bundel aplikasi.

Kumpulan argumen yang valid bergantung pada platform.

Biasanya ini tidak boleh digunakan kecuali ditentukan oleh teknisi Microsoft.

Ikon Aplikasi

Grup item AppIcon dapat digunakan untuk menentukan ikon aplikasi untuk aplikasi.

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

Contoh:

<PropertyGroup>
    <!-- The value to put in here for the "Resources/MyImages.xcassets/MyAppIcon.appiconset" resource would be "MyAppIcon" -->
    <AppIcon>MyAppIcon</AppIcon>
</PropertyGroup>

Lihat juga:

VersiTampilanAplikasi

Jika diatur, menentukan nilai CFBundleShortVersionString dalam manifes aplikasi (Info.plist).

Ini adalah properti yang mendukung ".NET Single Project".

Lihat OneDotNetSingleProject untuk informasi selengkapnya.

ApplicationId

Jika diatur, menentukan nilai CFBundleIdentifier dalam manifes aplikasi (Info.plist).

Ini adalah properti yang mendukung ".NET Single Project".

Lihat OneDotNetSingleProject untuk informasi selengkapnya.

Judul Aplikasi

Jika diatur, menentukan CFBundleDisplayName dalam manifes aplikasi (Info.plist).

Ini adalah properti yang mendukung ".NET Single Project".

Lihat OneDotNetSingleProject untuk informasi selengkapnya.

VersiAplikasi

Jika diatur, menentukan CFBundleVersion dalam manifes aplikasi (Info.plist).

Ini adalah properti yang mendukung ".NET Single Project".

Lihat OneDotNetSingleProject untuk informasi selengkapnya.

ArchiveBasePath

Lokasi tempat arsip disimpan di Windows untuk build jarak jauh.

Defaultnya adalah: %LocalAppData%\Xamarin\iOS\Archives

Hanya berlaku untuk proyek iOS (karena hanya proyek iOS yang dapat dibangun dari jarak jauh dari Windows).

ArchiveOnBuild

Jika arsip Xcode harus dibuat di akhir build.

BGenEmitDebugInformation

Apakah alat bgen (generator pengikatan) harus mengeluarkan informasi debug atau tidak.

Perilaku default adalah true ketika properti Debug diatur ke true.

BGenExtraArgs

Setiap argumen tambahan yang diberikan ke alat bgen (generator pengikatan).

BGenToolExe

Nama berkas eksekusi bgen (alat yang digunakan oleh proyek pengikatan untuk menghasilkan pengikatan).

Perilaku bawaan adalah menggunakan alat bgen yang disertakan dalam beban kerja kami.

BGenToolPath

Direktori di mana bgen (BGenToolExe) berada.

Perilaku bawaan adalah menggunakan alat bgen yang disertakan dalam beban kerja kami.

BuildIpa

Jika sebuah paket (.ipa) harus dibuat untuk sebuah bundel aplikasi di akhir build.

Hanya berlaku untuk proyek iOS dan tvOS.

Lihat CreatePackage untuk proyek macOS dan Mac Catalyst.

BundleCreateDump

CoreCLR memiliki utilitas baris perintah yang disebut createdump untuk membuat cadangan inti jika proses crash. macOS akan secara otomatis membuat laporan crash untuk aplikasi App Store apa pun dan membuatnya tersedia untuk pengembang aplikasi, sehingga createdump alat ini tidak berguna untuk banyak aplikasi macOS, dan dengan demikian, tidak disertakan dalam aplikasi secara default.

Ini dapat diganti dengan mengatur properti BundleCreateDump.

<PropertyGroup>
  <BundleCreateDump>true</BundleCreateDump>
</PropertyGroup>

Catatan: createdump alat ini tidak berfungsi saat ini untuk aplikasi yang di-sandbox (#18961);

Hanya berlaku untuk proyek yang menggunakan runtime CoreCLR (yang, pada saat penulisan ini, hanya proyek macOS).

Paket Sumber Daya Asli

Properti ini menentukan apakah sumber daya dikompilasi sebelum disematkan ke dalam proyek pustaka, atau jika versi asli (tidak terkompilasi) disematkan.

Secara historis, sumber daya telah dikompilasi sebelum disematkan ke dalam proyek pustaka, tetapi ini mengharuskan memiliki Xcode yang tersedia, yang memiliki beberapa kelemahan:

  • Ini memperlambat build jarak jauh pada Windows.
  • Ini tidak akan berfungsi saat membangun secara lokal di Windows, dan tidak di platform lain kecuali macOS.
  • Sumber daya dikompilasi menggunakan Xcode yang tersedia saat ini, yang mungkin tidak memiliki fitur yang sama dengan Xcode yang berpotensi lebih baru yang tersedia ketika pustaka yang dimaksud digunakan.
  • Ini membuatnya tidak mungkin untuk memiliki tampilan seluruh program dari semua sumber daya saat membangun aplikasi, yang diperlukan untuk mendeteksi sumber daya yang berbenturan.

Dengan demikian, kami telah menambahkan dukungan untuk menyematkan sumber daya asli ke dalam pustaka. Ini akan menjadi pilihan ikut serta dalam .NET 9, tetapi pilihan keluar mulai dari .NET 10.

Nilai default properti false ini di .NET 9, dan true di .NET 10+.

Nota

Ajukan masalah jika Anda menemukan bahwa Anda perlu menonaktifkan fitur ini, karena mungkin opsi untuk menonaktifkannya akan dihapus di masa mendatang.

CodesignAllocate

Jalur ke alat codesign_allocate.

Secara default nilai ini terdeteksi secara otomatis.

CodesignConfigureDependsOn

Ini adalah titik ekstensi untuk build: pengembang dapat menambahkan target apa pun ke properti ini untuk menjalankan target tersebut sebelum build melihat salah satu properti codesigning.

Ini misalnya dapat digunakan untuk menonaktifkan penandatanganan kode untuk build simulator:

<PropertyGroup>
  <CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);DisableCodesignInSimulator</CodesignConfigureDependsOn>
</PropertyGroup>
<Target Name="DisableCodesignInSimulator" Condition="'$(SdkIsSimulator)' == 'true'">
  <PropertyGroup>
    <EnableCodeSigning>false</EnableCodeSigning>
  </PropertyGroup>
</Target>

KetergantunganCodesign

Ini adalah titik ekstensi untuk build: pengembang dapat menambahkan target apa pun ke properti ini untuk menjalankan target tersebut sebelum app bundle ditandatangani.

Contoh:

<PropertyGroup>
  <CodesignDependsOn>$(CodesignDependsOn);DoThisBeforeCodesign</CodesignDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCodesign">
  <Exec Command="echo This is executed right before the app is signed." />
</Target>

CodesignEntitlements

Jalur ke file pemberian izin yang menentukan pemberian izin yang diperlukan aplikasi.

Biasanya "Entitlements.plist".

Kami akan secara otomatis mengatur ini ke "Entitlements.plist" jika file tersebut ada di direktori akar proyek.

Ini dapat dicegah dengan mengatur properti EnableDefaultCodesignEntitlements ke false.

CodesignExtraArgs

Argumen tambahan diteruskan ke alat 'codesign' saat menandatangani bundel aplikasi.

CodesignKey

Menentukan kunci penandatanganan kode yang akan digunakan saat menandatangani bundel aplikasi.

CodesignKeychain

Rantai kunci yang akan digunakan selama penandatanganan kode.

Kunci Penandatanganan Kode

Menentukan kunci penandatanganan kode yang akan digunakan saat menandatangani bundel aplikasi.

Hanya berlaku untuk app macOS dan Mac Catalyst, tetapi disarankan untuk menggunakan properti CodesignKey sebagai gantinya (yang berfungsi di semua platform).

CodesignProvision

Menentukan profil provisi yang akan digunakan saat menandatangani bundel aplikasi.

CodesignResourceRules

Jalur ke ResourceRules.plist untuk menyalin ke bundel aplikasi.

Profil Penyediaan Wajib Pemrograman Ulang

Menentukan apakah profil provisi diperlukan saat menandatangani bundel aplikasi.

Secara default, kami memerlukan profil provisi jika:

  • macOS, Mac Catalyst: profil provisi telah ditentukan (dengan properti CodesignProvision).
  • iOS, tvOS: membangun untuk perangkat atau file pemberian izin telah ditentukan (dengan properti CodesignEntitlements ).

Mengatur properti ini ke true atau false akan mengambil alih logika default.

PaketSumberDayaKompresiPengikatan

Referensi asli dalam proyek pengikatan disalin ke direktori output selama proses build, di samping rakitan pengikatan (ke dalam sesuatu yang kami sebut "paket sumber daya pengikatan").

Referensi asli ini dapat disimpan dikompresi di dalam file zip (bernama $(AssemblyName).resources.zip, atau as-is, di dalam direktori bernama $(AssemblyName).resources.

Properti CompressBindingResourcePackage menentukan apakah akan membuat file zip atau direktori.

Nilai yang mungkin adalah:

  • auto: secara otomatis memutuskan opsi terbaik (saat ini file zip selalu dibuat, tetapi setelah Visual Studio mendukung jalur panjang di Windows, ini dapat berubah menjadi hanya paket sumber daya pengikatan zip dengan symlink).
  • true: buat file zip
  • false: membuat direktori

Defaultnya adalah auto.

Ini juga berlaku untuk bagaimana referensi asli disimpan di dalam NuGets.

Nota

Dalam beberapa kasus, dapat bermanfaat untuk memaksa penggunaan file zip di iOS, terutama ketika ada kerangka dengan file yang memiliki nama panjang, karena file zip terkadang dapat mengatasi masalah MAX_PATH di Windows.

CopySceneKitAssetsPath

Jalur lengkap ke alat copySceneKitAssets.

Perilaku defaultnya adalah menggunakan xcrun copySceneKitAssets.

CoreMLCompilerPath

Jalur lengkap ke alat coremlc.

Perilaku defaultnya adalah menggunakan xcrun coremlc.

BuatPaketAplikasiBergantungPada

Ini adalah titik ekstensi untuk build: pengembang dapat menambahkan target apa pun ke properti ini untuk menjalankan target tersebut saat membuat bundel aplikasi.

Contoh:

<PropertyGroup>
  <CreateAppBundleDependsOn>$(CreateAppBundleDependsOn);DoThisBeforeCreatingAppBundle</CreateAppBundleDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingAppBundle">
  <Exec Command="echo This is executed before the app bundle is created." />
</Target>

BuatKetergantunganIpa

Ini adalah titik ekstensi untuk build: pengembang dapat menambahkan target apa pun ke properti ini untuk menjalankan target tersebut saat membuat IPA.

Berlaku untuk semua platform yang membangun arsip IPA (saat ini iOS dan tvOS).

Contoh:

<PropertyGroup>
  <CreateIpaDependsOn>$(CreateIpaDependsOn);DoThisBeforeCreatingIPA</CreateIpaDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingIPA">
  <Exec Command="echo This is executed before the IPA is created." />
</Target>

BuatPaket

Jika paket (.pkg) harus dibuat untuk bundel aplikasi di akhir proses build.

Hanya berlaku untuk proyek macOS dan Mac Catalyst.

Lihat BuildIpa untuk proyek iOS dan tvOS.

DeviceSpecificBuild

Jika build harus spesifik untuk perangkat yang dipilih.

Berlaku untuk semua platform yang mendukung build khusus perangkat (saat ini iOS dan tvOS).

JalurKeluaranAntaraSpesifikPerangkat

Jalur output perantara yang akan digunakan saat build khusus perangkat diaktifkan.

Berlaku untuk semua platform yang mendukung build khusus perangkat (saat ini iOS dan tvOS).

JalurKeluaranKhususPerangkat

Jalur output yang akan digunakan saat build khusus perangkat diaktifkan.

Berlaku untuk semua platform yang mendukung build khusus perangkat (saat ini iOS dan tvOS).

Alamat Diagnostik

Alamat IP di mana dotnet-dsrouter sedang dieksekusi. Ini secara tipikal 127.0.0.1 saat membuat profil pada simulator, dan alamat IP komputer tempat dotnet-dsrouter saat membuat profil pada perangkat.

Ini adalah komponen alamat IP dari DiagnosticConfiguration'.

Secara implisit mengatur EnableDiagnostics ke true.

Secara default menjadi 127.0.0.1.

Konfigurasi Diagnostik

Nilai yang disediakan oleh dotnet-dsrouter untuk DOTNET_DiagnosticPorts seperti:

  • 127.0.0.1:9000,suspend,connect
  • 127.0.0.1:9000,nosuspend,connect

Perhatikan bahwa karakter , harus di-escape dengan %2c jika diteruskan dalam command line ke dotnet build:

dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect

Ini akan secara otomatis mengatur variabel lingkungan yang dipaketkan DOTNET_DiagnosticPorts di dalam aplikasi, sehingga variabel lingkungan diatur saat aplikasi diluncurkan.

Secara implisit mengatur EnableDiagnostics ke true.

Perilaku defaultnya adalah menghitung nilai ini dari properti diagnostik lainnya (DiagnosticAddress, DiagnosticPort, DiagnosticListenMode, dan DiagnosticSuspend).

Jika diatur, salah satu properti diagnostik lainnya akan diabaikan.

DiagnosticListenMode

Nilai yang disediakan oleh dotnet-dsrouter seperti connect atau listen, komponen mode mendengarkan DiagnosticConfiguration'.

Secara implisit mengatur EnableDiagnostics ke true.

Secara default menjadi listen.

DiagnosticPort

Nilai yang disediakan oleh dotnet-dsrouter seperti 9000, komponen port DiagnosticConfiguration'.

Secara implisit mengatur EnableDiagnostics ke true.

Secara default menjadi 9000.

DiagnosticSuspend

Nilai yang menentukan perilaku startup saat membuat profil aplikasi.

Atur ke true untuk menangguhkan aplikasi saat startup (menunggu server diagnostik tersambung ke aplikasi) atau false untuk meluncurkan aplikasi seperti biasa (dan menyambungkan server diagnostik ke aplikasi nanti).

Ini sesuai dengan nilai suspend/nosuspend dalam DiagnosticConfiguration.

Secara implisit mengatur EnableDiagnostics ke true.

Secara default menjadi false.

DittoPath

Jalur lengkap ke file eksekusi ditto.

Perilaku defaultnya adalah menggunakan /usr/bin/ditto.

Menyematkan Sumber Daya Sesuai Permintaan

Jika sumber daya sesuai permintaan perlu disematkan dalam bundel aplikasi.

Bawaan: true

Mengaktifkan EnableCodeSigning

Jika penandatanganan kode diaktifkan.

Penandatanganan kode diaktifkan secara default untuk semua platform; ini dapat dikesampingkan dengan properti ini.

AktifkanPengaturanBawaanCodesignEntitlements

Lihat CodesignEntitlements.

AktifkanSumberDayaSesuaiPermintaan

Jika sumber daya sesuai permintaan diaktifkan.

Default: salah untuk macOS, benar untuk semua platform lainnya.

AktifkanPenandatangananPaket

Jika .pkg yang dibuat (jika CreatePackage telah diaktifkan) harus ditandatangani.

Hanya berlaku untuk macOS dan Mac Catalyst.

Aktifkan Diagnostik

Aktifkan komponen yang diperlukan agar diagnostik (seperti pembuatan profil) berfungsi.

Ini diaktifkan secara default untuk build debug (ketika MtouchDebug atau MmpDebug diaktifkan), tetapi perlu diaktifkan secara manual sebelum membuat profil build rilis:

<PropertyGroup>
  <EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>

Ini akan meningkatkan ukuran aplikasi sedikit.

Hanya berlaku saat menggunakan runtime Mono (CoreCLR selalu mendukung diagnostik, sementara NativeAOT tidak pernah melakukannya).

AktifkanSGenConc

Mengaktifkan mode bersamaan untuk pengumpul sampah SGen.

Hanya berlaku untuk iOS, tvOS, dan Mac Catalyst (saat tidak menggunakan NativeAOT).

EventSourceSupport

Ketika diatur ke false, menonaktifkan dukungan EventSource dari .NET dalam aplikasi yang telah dipangkas. Menonaktifkan fitur ini akan mencegah alat diagnostik .NET seperti dotnet-counters berfungsi, tetapi dengan manfaat ukuran aplikasi yang berkurang.

Default: disetel ke false jika Optimize disetel ke true (default untuk build Release), kecuali $(EnableDiagnostics) diaktifkan.

MenghasilkanManifesAplikasi

Jika manifes aplikasi (Info.plist) harus dibuat.

Bawaan: true

DirektoriSumberDihasilkan

Tempat sumber yang dihasilkan dari generator disimpan.

SertakanSemuaIkonAplikasi

Atur properti IncludeAllAppIcons ke true untuk menyertakan semua ikon aplikasi secara otomatis dari semua katalog aset di aplikasi.

Contoh:

<PropertyGroup>
    <IncludeAllAppIcons>true</IncludeAllAppIcons>
</PropertyGroup>

Lihat juga:

Versi Minimum iOS

Menentukan versi iOS minimum yang dapat dijalankan aplikasi.

Berlaku untuk iOS; menetapkan nilai ini akan menetapkan SupportedOSPlatformVersion untuk proyek iOS (hanya).

IPhoneResourcePrefix

Direktori tempat sumber daya disimpan (awalan ini akan dihapus saat menyalin sumber daya ke bundel aplikasi).

Berlaku untuk proyek iOS, tvOS, dan Mac Catalyst.

Pertimbangkan untuk menggunakan properti AppBundleResourcePrefix terpadu sebagai gantinya.

Lihat juga MonoMacResourcePrefix dan XamMacResourcePrefix.

IpaIncludeArtwork

Jika karya seni harus disertakan dalam IPA.

Hanya berlaku untuk proyek iOS dan tvOS.

IpaPackageName

Menentukan nama file .ipa yang dihasilkan (tanpa jalur) saat membuat paket IPA (lihat BuildIpa). IpaPackagePath akan mengambil alih nilai ini.

Hanya berlaku untuk proyek iOS dan tvOS.

IpaPackageDir

Menentukan direktori file .ipa yang dihasilkan saat membuat paket IPA (lihat BuildIpa). IpaPackagePath akan mengambil alih nilai ini.

Hanya berlaku untuk proyek iOS dan tvOS.

IpaPackagePath

Menentukan jalur ke file .ipa yang dihasilkan saat membuat paket IPA (lihat BuildIpa).

Hanya berlaku untuk proyek iOS dan tvOS.

IsAppExtension

Jika proyek adalah ekstensi aplikasi.

IsBindingProject

Jika proyek adalah proyek yang mengikat.

IsXPCService

Jika ekstensi macOS adalah layanan xpc.

Hanya berlaku untuk proyek macOS.

LinkMode

Menentukan mode tautan untuk proyek (None, SdkOnly atau Full).

Berlaku untuk proyek macOS, tetapi properti ini tidak digunakan lagi, gunakan TrimMode sebagai gantinya.

Lihat juga MtouchLink.

LinkWithSwiftSystemLibraries

Jika dikonfigurasi ke true, build akan memberi tahu penghubung asli tentang di mana menemukan pustaka sistem Swift.

Ini berguna ketika perpustakaan asli menggunakan Swift dengan cara tertentu, dalam hal ini, linker asli perlu tahu di mana menemukan perpustakaan sistem Swift.

Saat ini ini berarti argumen ini akan diteruskan ke linker asli:

  • -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/[platform]
  • -L/Applications/Xcode.app/Contents/Developer/Platforms/[platform].platform/Developer/SDK/[platform].sdk/usr/lib/swift

Kumpulan argumen yang tepat dapat berubah di masa mendatang.

Versi Minimum MacCatalyst

Menentukan versi Mac Catalyst (iOS) minimum yang dapat dijalankan oleh aplikasi.

Berlaku untuk Mac Catalyst; mengatur nilai ini akan mengatur SupportedOSPlatformVersion hanya untuk proyek Mac Catalyst.

MaciOSPersiapanUntukMembangunBergantungPada

Properti yang dipisahkan dengan titik koma yang dapat digunakan untuk memperluas proses build. Target MSBuild yang ditambahkan ke properti ini akan dijalankan di awal build untuk jenis proyek aplikasi dan pustaka. Properti ini kosong secara default.

Contoh:

<PropertyGroup>
  <MaciOSPrepareForBuildDependsOn>$(MaciOSPrepareForBuildDependsOn);MyCustomTarget</MaciOSPrepareForBuildDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

Properti ini diperkenalkan di .NET 9.

macOSMinimumVersion

Menentukan versi macOS minimum yang dapat dijalankan oleh aplikasi.

Berlaku untuk macOS; menetapkan nilai ini akan menetapkan SupportedOSPlatformVersion untuk proyek macOS saja.

MacOSXSdkVersion

Versi macOS SDK yang akan digunakan untuk build.

Bawaan: secara otomatis terdeteksi sesuai dengan versi bawaan yang disertakan dengan Xcode yang dipilih.

Lihat juga MtouchSdkVersion.

MarshalManagedExceptionMode

Pilih cara penanganan pengecualian terkelola ketika menemui frame asli selama pembongkaran tumpukan dalam proses pengecualian terkelola.

Nilai yang valid:

  • default: Saat ini, ini adalah throwobjectivecexception.
  • unwindnativecode: Ini tidak tersedia saat menggunakan runtime CoreCLR.
  • throwobjectivecexception: Tangkap pengecualian terkelola dan ubah menjadi pengecualian Objective-C.
  • abort: Batalkan proses.
  • disable: Nonaktifkan penyadapan pengecualian terkelola apa pun. Untuk MonoVM, ini setara dengan unwindnativecode, untuk CoreCLR, ini setara dengan abort.

Untuk informasi selengkapnya, lihat Marshaling Pengecualian dan MarshalObjectiveCExceptionMode.

Mode Pengecualian MarshalObjectiveC

Pilih bagaimana pengecualian Objective-C ditangani saat menghadapi bingkai terkelola selama membuka tumpukan ketika memproses pengecualian Objective-C.

Nilai yang valid:

  • default: Saat ini, ini adalah throwmanagedexception.
  • unwindmanagedcode: Ini tidak tersedia saat menggunakan runtime CoreCLR.
  • throwmanagedexception: Tangkap pengecualian Objective-C, dan konversikan menjadi pengecualian terkelola.
  • abort: Batalkan proses.
  • disable: Nonaktifkan penyadapan pengecualian Objective-C.

Untuk informasi selengkapnya, lihat Pemarshalan Pengecualian dan MarshalManagedExceptionMode.

MdimportPath

Jalur lengkap ke alat mdimport.

Perilaku defaultnya adalah menggunakan xcrun mdimport.

MetalLibPath

Jalur lengkap ke alat metallib (Metal Linker).

Perilaku defaultnya adalah menggunakan xcrun metallib.

MetalPath

Jalur lengkap ke pengompilasi Metal.

Perilaku defaultnya adalah menggunakan xcrun metal.

MetricsSupport

Ketika diatur ke false, menonaktifkan dukungan Metrik .NET dari aplikasi yang dipangkas. Menonaktifkan fitur ini akan mencegah API seperti System.Diagnostics.Metrics berfungsi, tetapi dengan manfaat pengurangan ukuran aplikasi.

Default: disetel ke false jika Optimize disetel ke true (default untuk build Release), kecuali $(EnableDiagnostics) diaktifkan.

MmpDebug

Mengaktifkan mode debug untuk pembuatan app bundle.

Hanya berlaku untuk proyek macOS.

Lihat juga MtouchDebug.

PemangkasanAtributAgresifMobile

Properti ini menentukan apakah banyak atribut yang sangat jarang diperlukan saat runtime harus dipangkas.

Hal ini diaktifkan secara default.

Perhatikan bahwa meskipun atribut yang dihapus sangat jarang digunakan, secara teknis mungkin penghapusan dapat mengubah perilaku runtime.

Misalnya, System.Xml.Serialization akan berperilaku berbeda jika konstruktor memiliki [Obsolete] atribut (yang merupakan salah satu atribut yang dihapus). Ini adalah risiko yang cukup rendah untuk membenarkan penghapusan atribut ini secara default karena penghematan ukuran.

Daftar atribut yang dihapus dapat berubah di masa mendatang, tetapi pada saat penulisan ini (untuk .NET 10), ini adalah atribut:

  • Microsoft.CodeAnalysis.EmbeddedAttribute
  • System.CLSCompliantAttribute
  • System.CodeDom.Compiler.GeneratedCodeAttribute
  • System.ComponentModel.EditorBrowsableAttribute
  • System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute
  • System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute
  • System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute
  • System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
  • System.Diagnostics.CodeAnalysis.ExperimentalAttribute
  • System.Diagnostics.CodeAnalysis.FeatureGuardAttribute
  • System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute
  • System.Diagnostics.CodeAnalysis.MemberNotNullAttribute
  • System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute
  • System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute
  • System.Diagnostics.CodeAnalysis.NotNullWhenAttribute
  • System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute
  • System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute
  • System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute
  • System.Diagnostics.CodeAnalysis.StringSyntaxAttribute
  • System.Diagnostics.CodeAnalysis.SuppressMessageAttribute
  • System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute
  • System.Diagnostics.CodeAnalysis.UnscopedRefAttribute
  • System.ObsoleteAttribute
  • System.Reflection.AssemblyCompanyAttribute
  • System.Reflection.AssemblyConfigurationAttribute
  • System.Reflection.AssemblyCopyrightAttribute
  • System.Reflection.AssemblyDefaultAliasAttribute
  • System.Reflection.AssemblyDescriptionAttribute
  • System.Reflection.AssemblyMetadataAttribute
  • System.Reflection.AssemblyProductAttribute
  • System.Reflection.AssemblyTitleAttribute
  • System.Runtime.CompilerServices.AsyncMethodBuilderAttribute
  • System.Runtime.CompilerServices.CallerArgumentExpressionAttribute
  • System.Runtime.CompilerServices.CallerFilePathAttribute
  • System.Runtime.CompilerServices.CallerLineNumberAttribute
  • System.Runtime.CompilerServices.CallerMemberNameAttribute
  • System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute
  • System.Runtime.CompilerServices.CompilerGlobalScopeAttribute
  • System.Runtime.CompilerServices.EnumeratorCancellationAttribute
  • System.Runtime.CompilerServices.ExtensionAttribute
  • System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute
  • System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute
  • System.Runtime.CompilerServices.IntrinsicAttribute
  • System.Runtime.CompilerServices.IsReadOnlyAttribute
  • System.Runtime.CompilerServices.IsUnmanagedAttribute
  • System.Runtime.CompilerServices.NativeIntegerAttribute
  • System.Runtime.CompilerServices.RefSafetyRulesAttribute
  • System.Runtime.CompilerServices.ScopedRefAttribute
  • System.Runtime.CompilerServices.SkipLocalsInitAttribute
  • System.Runtime.CompilerServices.TupleElementNamesAttribute
  • System.Runtime.InteropServices.LibraryImportAttribute
  • System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshallerAttribute
  • System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute
  • System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute
  • System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute
  • System.Runtime.Versioning.NonVersionableAttribute
  • System.Runtime.Versioning.ObsoletedOSPlatformAttribute
  • System.Runtime.Versioning.RequiresPreviewFeaturesAttribute
  • System.Runtime.Versioning.SupportedOSPlatformAttribute
  • System.Runtime.Versioning.SupportedOSPlatformGuardAttribute
  • System.Runtime.Versioning.TargetPlatformAttribute
  • System.Runtime.Versioning.UnsupportedOSPlatformAttribute
  • System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute

Properti ini diperkenalkan dalam .NET 10.

MonoBundlingExtraArgs

Argumen tambahan yang menentukan cara membuat app bundle.

Hanya berlaku untuk proyek macOS.

Properti ini tidak digunakan lagi, gunakan AppBundleExtraOptions sebagai gantinya.

MonoMacResourcePrefix

Direktori tempat sumber daya disimpan (awalan ini akan dihapus saat menyalin sumber daya ke bundel aplikasi).

Hanya berlaku untuk proyek macOS.

Pertimbangkan untuk menggunakan properti AppBundleResourcePrefix terpadu sebagai gantinya.

Lihat juga IPhoneResourcePrefix dan XamMacResourcePrefix.

MonoUseCompressedInterfaceBitmap

Ini mengarahkan runtime Mono untuk menggunakan versi bitmap antarmuka terkompresi (bitmap antarmuka digunakan untuk menentukan apakah jenis tertentu mengimplementasikan antarmuka tertentu).

Bitmap ini dapat menggunakan sejumlah besar memori saat runtime, khususnya untuk aplikasi yang memiliki sejumlah besar antarmuka.

Pengaturan ini dinonaktifkan secara default, tetapi dapat diaktifkan seperti ini, yang akan mengurangi jumlah memori yang digunakan saat runtime:

<PropertyGroup>
    <MonoUseCompressedInterfaceBitmap>true</MonoUseCompressedInterfaceBitmap>
</PropertyGroup>

Kelemahannya adalah pemeriksaan tipe (obj is SomeInterface) akan lebih lambat.

Hanya berlaku saat menggunakan runtime Mono.

MtouchDebug

Mengaktifkan mode debug untuk pembuatan app bundle.

Berlaku untuk proyek iOS, tvOS, dan Mac Catalyst.

Lihat juga MmpDebug.

MtouchEnableSGenConc

Mengaktifkan mode bersamaan untuk pengumpul sampah SGen.

Hanya berlaku untuk iOS, tvOS, dan Mac Catalyst saat tidak menggunakan NativeAOT.

Properti ini tidak digunakan lagi, gunakan EnableSGenConc sebagai gantinya.

MtouchExtraArgs

Argumen tambahan yang menentukan cara membuat app bundle.

Hanya berlaku untuk proyek iOS, tvOS, dan Mac Catalyst.

Properti ini tidak digunakan lagi, gunakan AppBundleExtraOptions sebagai gantinya.

MtouchInterpreter

Memungkinkan penerjemah, dan secara opsional mengambil daftar rakitan yang dipisahkan koma untuk menafsirkan (jika diawali dengan tanda minus, rakitan akan dikompilasi AOT sebagai gantinya). 'all' dapat digunakan untuk menentukan semua rakitan. Argumen ini dapat ditentukan beberapa kali.

Contoh:

<PropertyGroup>
  <!-- interpret all assemblies -->
  <MtouchInterpreter>all</MtouchInterpreter>

  <!-- AOT-compile all assemblies, except System.dll, which will be interpreted. -->
  <MtouchInterpreter>System</MtouchInterpreter>

  <!-- interpret all assemblies, except System.Core.dll, which will be AOT-compiled. -->
  <MtouchInterpreter>all,-System.Core</MtouchInterpreter>
</PropertyGroup>

Cara cepat untuk MtouchInterpreter adalah dengan menyetel UseInterpreter=true, yang setara dengan MtouchInterpreter=all.

Jika UseInterpreter dan MtouchInterpreter diatur, MtouchInterpreter lebih diutamakan.

Berlaku untuk app iOS, tvOS, dan Mac Catalyst (saat tidak menggunakan NativeAOT).

Perilaku defaultnya adalah tidak mengaktifkan penerjemah.

Nota

MAUI mengubah default dengan mengatur UseInterpreter=true untuk konfigurasi "Debug".

Menentukan mode tautan untuk proyek (None, SdkOnly, Full).

Berlaku untuk proyek iOS, tvOS, dan Mac Catalyst, tetapi properti ini tidak digunakan lagi, gunakan TrimMode sebagai gantinya.

Lihat juga LinkMode.

MtouchSdkVersion

Versi iOS atau tvOS SDK yang akan digunakan untuk build.

Bawaan: secara otomatis terdeteksi sesuai dengan versi bawaan yang disertakan dengan Xcode yang dipilih.

Lihat juga MacOSXSdkVersion.

MtouchUseLlvm

Properti boolean yang menentukan apakah kompilasi AOT harus dilakukan menggunakan LLVM.

Berlaku untuk proyek iOS, tvOS, dan Mac Catalyst.

Bawaan

  • Pada iOS dan tvOS: diaktifkan untuk build rilis (di mana Configuration="Release").
  • Di Mac Catalyst: tidak pernah diaktifkan secara default.

NoBindingEmbedding

Properti boolean yang menentukan apakah pustaka asli dalam proyek pengikatan harus disematkan dalam rakitan terkelola, atau dimasukkan ke dalam direktori .resources di samping rakitan terkelola.

Nilai default adalah true (yang berarti pustaka asli akan tidak disematkan dalam rakitan terkelola).

Nota

Xcframeworks tidak akan berfungsi dengan benar jika disematkan di dalam managed assembly (jika properti ini bukan true).

NoDSymUtil

Properti boolean yang menentukan apakah pembuatan file .dSYM harus dinonaktifkan.

Bawaan

  • true untuk iOS dan tvOS saat membangun simulator.
  • true untuk macOS dan Mac Catalyst, kecuali saat membuat arsip (ArchiveOnBuild=true)

Ini berarti arsip .dSYM akan dihasilkan dalam kasus berikut (secara default):

  • Di iOS dan tvOS saat membangun perangkat.
  • Di macOS dan Mac Catalyst saat membuat arsip (ArchiveOnBuild=true).

NoSymbolStrip

Properti boolean yang menentukan apakah simbol debug dihapus dari aplikasi pada waktu build.

Perilaku defaultnya adalah menyimpan simbol debug untuk:

  • Debug kompilasi untuk platform-platform desktop.
  • Simulator dibangun untuk platform seluler.

Contoh untuk menyimpan simbol debug:

<PropertyGroup>
  <NoSymbolStrip>true</NoSymbolStrip>
</PropertyGroup>

OnDemandResourcesInitialInstallTags

Properti string yang menentukan tag penginstalan awal untuk sumber daya sesuai permintaan.

OnDemandResourcesPrefetchOrder

Properti string yang menentukan urutan prefetch untuk sumber daya sesuai permintaan.

OnDemandResourcesUrl

Properti string yang menentukan url sumber daya untuk sumber daya yang dapat diminta.

OptimizePNGs

Properti boolean yang menentukan apakah gambar png harus dioptimalkan.

KetergantunganOptimasiGambarPng

Ini adalah titik ekstensi untuk build: pengembang dapat menambahkan target apa pun ke properti ini untuk menjalankan target tersebut sebelum gambar png dioptimalkan.

Contoh:

<PropertyGroup>
  <OptimizePngImagesDependsOn>$(OptimizePngImagesDependsOn);MyCustomTarget</OptimizePngImagesDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

OptimizePropertyLists

Properti boolean yang menentukan apakah daftar properti (plists) harus dioptimalkan.

DaftarPropertiOptimalBergantungPada

Ini adalah titik ekstensi untuk build: pengembang dapat menambahkan target apa pun ke properti ini untuk menjalankan target tersebut sebelum daftar properti (plist) dioptimalkan.

Contoh:

<PropertyGroup>
  <OptimizePropertyListsDependsOn>$(OptimizePropertyListsDependsOn);MyCustomTarget</OptimizePropertyListsDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

KunciTandaTanganPaket

Menentukan kunci penandatanganan kode untuk menandatangani paket saat membuat .pkg untuk proyek macOS dan Mac Catalyst.

Hanya berlaku untuk app macOS dan Mac Catalyst.

PackagingExtraArgs

Menentukan argumen tambahan untuk diteruskan ke alat 'productbuild' saat membuat .pkg untuk proyek macOS dan Mac Catalyst.

Hanya berlaku untuk app macOS dan Mac Catalyst.

PkgPackagePath

Menentukan jalur ke file .pkg yang dihasilkan saat membuat paket (lihat CreatePackage).

Hanya berlaku untuk app macOS dan Mac Catalyst.

PlutilPath

Jalur lengkap ke alat baris perintah plutil.

Perilaku defaultnya adalah menggunakan xcrun plutil.

PngCrushPath

Jalur lengkap ke alat baris perintah pngcrush.

Perilaku defaultnya adalah menggunakan xcrun pngcrush.

ProcessEnums

Properti boolean yang menentukan apakah enum harus diproses sebagai definisi api dalam proyek pengikatan.

ProductBuildPath

Jalur lengkap ke alat productbuild.

Perilaku defaultnya adalah menggunakan xcrun productbuild.

DefinisiProduk

Templat definisi produk (.plist) yang akan digunakan saat membuat definisi produk untuk diteruskan ke alat build produk saat membuat paket (.pkg).

Hanya berlaku untuk app macOS dan Mac Catalyst.

ReferensiSimbolAsli

Grup item ReferenceNativeSymbol dapat digunakan untuk menentukan bagaimana kita harus menangani simbol asli tertentu: mengabaikannya, atau meminta linker asli untuk menyimpannya (dengan meneruskan simbol sebagai -u ... atau dalam file simbol ke linker asli).

Ada dua jenis metadata yang didukung:

  • SymbolType: baik ObjectiveCClass, Function, atau Field. Digunakan untuk menghitung nama asli lengkap simbol (misalnya, simbol asli untuk MyClass kelas Objective-C _OBJC_CLASS_$_MyClass, sementara untuk fungsi MyFunction itu hanya _MyFunction.
  • SymbolMode: baik Ignore atau tidak ditetapkan. Ignore berarti tidak meneruskan simbol yang diberikan ke linker asli, defaultnya adalah melakukannya.

SymbolType diperlukan, sementara SymbolMode tidak.

Contoh simbol untuk disimpan:

<ItemGroup>
    <ReferenceNativeSymbol Include="MyClass" SymbolType="ObjectiveCClass" />
</ItemGroup>

Contoh simbol untuk diabaikan:

<ItemGroup>
    <ReferenceNativeSymbol Include="MyClass" SymbolType="ObjectiveCClass" SymbolMode="Ignore" />
</ItemGroup>

Fungsi RequireLinkWithAttributeForObjectiveCClassSearch (Memerlukan Tautan Dengan Atribut Untuk Pencarian Kelas Objective-C)

Kami akan secara otomatis memindai semua pustaka untuk kelas terkelola yang memetakan ke kelas Objective-C yang ada, lalu membuat referensi asli pada waktu build untuk kelas Objective-C tersebut.

Dengan cara ini, linker asli tidak akan menghapus kelas Objective-C ini, dengan anggapan bahwa mereka tidak digunakan.

Namun, ini dapat menyebabkan masalah jika kelas terkelola mereferensikan kelas Objective-C yang tidak ada. Perbaikan yang tepat untuk ini adalah menghapus kelas terkelola tersebut dari build, tetapi ini mungkin rumit, khususnya jika kelas terkelola berasal dari referensi biner (seperti NuGet).

Dalam kasus ini, dimungkinkan untuk mengatur properti RequireLinkWithAttributeForObjectiveCClassSearch ke true sehingga kami hanya akan memindai pustaka dengan atribut [LinkWith] untuk kelas Objective-C:

<PropertyGroup>
  <RequireLinkWithAttributeForObjectiveCClassSearch>true</RequireLinkWithAttributeForObjectiveCClassSearch>
</PropertyGroup>

RunWithOpen

Properti ini menentukan apakah aplikasi diluncurkan menggunakan open perintah di macOS, atau apakah aplikasi yang dapat dieksekusi dijalankan secara langsung.

Ini hanya berlaku untuk app macOS dan Mac Catalyst.

Nilai defaultnya adalah true. Dalam mode ini, aplikasi akan diluncurkan oleh macOS sebagai aplikasi UI lainnya, output stdout/stderr apa pun akan ditelan oleh macOS, dan dotnet run perintah akan selesai segera setelah aplikasi diluncurkan.

Jika diatur ke false, output stdout/stderr apa pun akan dicetak ke terminal saat ini, dan dotnet run perintah tidak akan selesai sampai aplikasi telah keluar.

Properti berikut dapat digunakan untuk mengonfigurasi perilaku saat diatur ke true (yaitu menggunakan open perintah ):

OpenNewInstance

Jika instans baru akan dibuka jika aplikasi sudah berjalan (default ke false).

Ini akan meneruskan -n ke open jika disetel menjadi true.

Contoh:

$ dotnet run -p:OpenNewInstance=false

OpenWaitForExit

Jika 'dotnet run' harus menunggu hingga aplikasi keluar (menggunakan nilai default false).

Ini akan meneruskan -W ke open jika disetel menjadi true.

Contoh:

$ dotnet run -p:OpenWaitForExit=true

OpenArguments

Properti ini dapat digunakan untuk meneruskan argumen tambahan ke open perintah .

Contoh (untuk mengatur variabel lingkungan):

$ dotnet run -p:OpenArguments="--env VARIABLE1=VALUE1 --env VARIABLE2=value2"

Contoh (untuk mengalihkan stdout dan stderr ke file):

$ dotnet run -p:OpenArguments="--stdout /tmp/stdout.txt --stderr /tmp/stderr.txt"

Jalankan man open untuk melihat daftar semua opsi open yang diterima.

StandardOutputPath

Properti ini dapat digunakan untuk mengalihkan output stdout dari aplikasi ke file.

Contoh penulisan ke file:

$ dotnet run -p:StandardOutputPath=stdout.txt

Contoh penulisan ke terminal saat ini:

$ dotnet run -p:StandardOutputPath=$(tty)
[... Console.WriteLine output from app ...]

Catatan: ini juga dapat dicapai dengan melewati --stdout ... menggunakan properti OpenArguments .

JalurKesalahanStandar

Properti ini dapat digunakan untuk mengalihkan output stderr dari aplikasi ke file.

Contoh penulisan ke file:

$ dotnet run -p:StandardErrorPath=stderr.txt

Contoh penulisan ke terminal saat ini:

$ dotnet run -p:StandardErrorPath=$(tty)
[... Console.Error.WriteLine output from app ...]

Catatan: ini juga dapat dicapai dengan melewati --stderr ... menggunakan properti OpenArguments .

StandardInputPath

Properti ini dapat digunakan untuk mengalihkan input stdin ke aplikasi dari file.

Contoh:

$ dotnet run -p:StandardInputPath=stdin.txt

Catatan: ini juga dapat dicapai dengan melewati --stdin ... menggunakan properti OpenArguments .

SdkIsSimulator

Properti ini adalah properti baca-saja (pengaturan itu tidak akan berpengaruh) yang menentukan apakah kita sedang membangun untuk simulator atau tidak.

Ini hanya diatur setelah impor dan properti dievaluasi. Ini berarti properti tidak ditentukan ketika mengevaluasi properti dalam file proyek, sehingga ini tidak akan berfungsi:

<PropertyGroup>
  <EnableCodeSigning Condition="'$(SdkIsSimulator)' == 'true'">false</EnableCodeSigning>
</PropertyGroup>

Namun, salah satu dari hal berikut berfungsi:

<ItemGroup>
  <!-- item groups (and their conditions) are evaluated after properties have been evaluated -->
  <CustomEntitlements Condition="'$(SdkIsSimulator)' == 'true'" Include="com.apple.simulator-entitlement" Type="Boolean" Value="true" />
  <CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);ConfigureSimulatorSigning</CodesignConfigureDependsOn>
</ItemGroup>
<!-- targets are executed after properties have been evaluated -->
<Target Name="ConfigureSimulatorSigning">
  <PropertyGroup>
    <EnableCodeSigning Condition="'$(SdkIsSimulator) == 'true'">false</EnableCodeSigning>
  </PropertyGroup>
</Target>

Catatan: properti ini akan selalu ada false di macOS dan Mac Catalyst.

StripPath

Jalur lengkap ke alat baris perintah strip.

Perilaku defaultnya adalah menggunakan xcrun strip.

VersiPlatformOSYangDidukung

Menentukan versi OS minimum yang dapat dijalankan aplikasi.

Anda juga dapat menggunakan properti khusus platform:

TrimMode

Menentukan granularitas pemangkasan.

Opsi yang valid adalah:

  • full: Pangkas setiap rakitan.
  • partial: Pangkas komponen yang telah memilih pemangkasan.
  • copy: Jangan memangkas rakitan apa pun.

Lihat TrimMode untuk informasi selengkapnya tentang properti TrimMode.

Nota

Untuk alasan teknis, pemangkas harus berjalan untuk semua proyek iOS, tvOS, macOS, dan Mac Catalyst, bahkan jika tidak ada rakitan yang akan dipangkas. Untuk alasan ini, tidak valid untuk menonaktifkan pemangkasan dengan mengatur PublishTrimmed ke false - untuk menonaktifkan pemangkasan, atur TrimMode=copy sebagai gantinya (kesalahan build akan dimunculkan jika PublishTrimmed diatur ke false).

Properti TrimMode setara dengan properti MtouchLink yang ada (untuk properti iOS, tvOS, dan Mac Catalyst) dan LinkMode (untuk macOS), tetapi nilai properti yang valid berbeda (meskipun semantiknya sama):

MtouchLink/LinkMode TrimMode
Penuh penuh
SdkOnly Parsial
Tidak menyalin

Ke depannya, properti MtouchLink dan LinkMode akan tidak digunakan lagi, silakan gunakan TrimMode sebagai gantinya.

Mode pemangkasan default tergantung pada banyak faktor, dan juga dapat berubah di masa depan.

Nilai default (per .NET 9) saat ini adalah:

  • iOS dan iOS: partial saat membangun perangkat, copy saat membangun simulator.
  • macOS: selalu copy.
  • Mac Catalyst: partial saat membangun konfigurasi "Release", copy sebaliknya.

Pengecualian:

  • Nilai default selalu full saat membangun dengan NativeAOT.
  • MAUI mengubah nilai default menjadi copy ketika membangun untuk konfigurasi Debugdan penerjemah diaktifkan menggunakan UseInterpreter (yang juga diaktifkan MAUI secara default saat menggunakan konfigurasi "Debug").

Nota

Mode pemangkasan default dapat berubah di masa mendatang.

Versi Minimum tvOS

Menentukan versi tvOS minimum yang dapat dijalankan aplikasi.

Berlaku untuk tvOS; menetapkan nilai ini akan menetapkan SupportedOSPlatformVersion untuk proyek tvOS saja.

UseFloatingTargetPlatformVersion

Properti boolean yang mengontrol apakah proyek pustaka harus menggunakan versi platform target yang tidak tetap atau versi platform terlama yang tersedia.

Secara default (dimulai di .NET 10), proyek pustaka tanpa eksplisit TargetPlatformVersion akan menggunakan rakitan referensi terlama yang tersedia untuk versi .NET saat ini. Ini memastikan kompatibilitas maksimum dan memungkinkan kode pustaka untuk dikompilasi terhadap permukaan API minimum yang tersedia untuk kerangka kerja target.

Namun, perilaku default ini berarti bahwa proyek pustaka dibangun secara berbeda dari proyek yang dapat dieksekusi (yang menggunakan versi platform terbaru). Kode yang berfungsi dalam proyek yang dapat dieksekusi mungkin tidak dikompilasi saat dipindahkan ke proyek pustaka jika menggunakan API hanya tersedia dalam versi platform yang lebih baru.

Mengatur properti ini untuk true menonaktifkan pilihan otomatis versi platform terlama, memungkinkan proyek pustaka untuk menggunakan versi platform default (terbaru) seperti yang dilakukan proyek yang dapat dieksekusi.

Contoh:

<PropertyGroup>
  <!-- Use the latest platform version instead of the oldest -->
  <UseFloatingTargetPlatformVersion>true</UseFloatingTargetPlatformVersion>
</PropertyGroup>

Default: false (gunakan versi platform terlama untuk proyek pustaka di .NET 10+).

Properti ini hanya berlaku untuk proyek pustaka (OutputType=Library) yang bukan ekstensi aplikasi dan belum menentukan versi platform target eksplisit (versi platform target adalah nomor versi opsional di akhir TargetFramework properti, misalnya untuk TargetFramework net10.0-ios26.0 versi platform target secara 26.0eksplisit ).

Properti ini diperkenalkan dalam .NET 10.

Gunakan Runtime Diperkeras

Properti boolean yang menentukan apakah runtime yang diperketat diaktifkan.

Berlaku untuk proyek macOS dan Mac Catalyst.

GunakanPenerjemah

Mengaktifkan penerjemah (untuk semua rakitan).

Ini setara dengan pengaturan MtouchInterpreter=all.

Berlaku untuk app iOS, tvOS, dan Mac Catalyst (saat tidak menggunakan NativeAOT).

Perilaku defaultnya adalah tidak mengaktifkan penerjemah.

Nota

MAUI mengubah default dengan mengatur UseInterpreter=true untuk konfigurasi "Debug".

Lihat MtouchInterpreter untuk informasi selengkapnya.

UseNativeHttpHandler

Apakah handler http asli harus menjadi handler http default atau tidak.

Bawaan: benar untuk semua platform kecuali macOS.

Validasi Hak dan Akses

Pilih apakah hak akses yang diminta oleh aplikasi harus divalidasi.

Nilai yang valid untuk properti ini:

  • disable: Validasi dinonaktifkan.
  • warn: Setiap kegagalan validasi ditampilkan sebagai peringatan.
  • error: Setiap kegagalan validasi ditampilkan sebagai kesalahan. Ini adalah default.

Proses validasi mungkin tidak memvalidasi setiap hak, juga tidak dijamin tidak berlebihan.

Jika validasi gagal untuk hak akses yang benar-benar berfungsi, silakan laporkan masalah baru.

ValidateXcodeVersion

Pilih apakah versi Xcode saat ini harus divalidasi.

Nilai defaultnya adalah memvalidasi; atur ke false untuk menonaktifkan.

Nota

Menggunakan yang berbeda dari versi yang direkomendasikan kemungkinan akan menghasilkan masalah di kemudian hari dalam proses build.

XamMacResourcePrefix

Direktori tempat sumber daya disimpan (awalan ini akan dihapus saat menyalin sumber daya ke bundel aplikasi).

Berlaku untuk proyek macOS.

Pertimbangkan untuk menggunakan properti AppBundleResourcePrefix terpadu sebagai gantinya.

Lihat juga IPhoneResourcePrefix dan MonoMacResourcePrefix.

ZipPath

Jalur lengkap ke alat baris perintah zip.

Perilaku defaultnya adalah menggunakan xcrun zip.