Skip to content

Project file properties

Rolf Bjarne Kvinge edited this page Dec 10, 2024 · 25 revisions

Properties and item groups in project files

Important

This document outdated, and has been migrated to:

Any new documentation about build properties or item groups should go here: https://github.com/xamarin/xamarin-macios/tree/main/docs/building-apps (which will then be copied to the website regularly).

See also: Project-file-properties-dotnet-migration

Build Properties

Android's build properties are documented here.

AOTMode

The AOT mode when AOT-compiling for macOS (this maps to the --aot=VALUE command-line option for mmp).

mmp --help will show all the valid options.

Only applicable to legacy Xamarin.Mac projects.

AdditionalLibPaths

Any extra libraries to pass to the binding generator to reference when compiling generated source code.

Applicable to all platforms.

.NET: the same.

AppBundleDir

The location of the built app bundle.

Applicable to all platforms.

.NET: the same.

ApplicationDisplayVersion

If set, specifies the CFBundleShortVersionString value in the app manifest (Info.plist).

This is a property that supports .NET "Single Project".

See OneDotNetSingleProject for more information.

Applicable to .NET projects (for all platforms).

ApplicationId

If set, specifies the CFBundleIdentifier value in the app manifest (Info.plist).

This is a property that supports .NET "Single Project".

See OneDotNetSingleProject for more information.

Applicable to .NET projects (for all platforms).

ApplicationTitle

If set, specifies the CFBundleDisplayName in the app manifest (Info.plist).

This is a property that supports .NET "Single Project".

See OneDotNetSingleProject for more information.

Applicable to .NET projects (for all platforms).

ApplicationVersion

If set, specifies the CFBundleVersion in the app manifest (Info.plist).

This is a property that supports .NET "Single Project".

See OneDotNetSingleProject for more information.

Applicable to .NET projects (for all platforms).

ArchiveBasePath

The location where archives are stored on Windows for a remote build.

The default is: %LocalAppData%\Xamarin\iOS\Archives

Only applicable to iOS and tvOS projects when they're built remotely (from Windows).

.NET: the same.

BTouchEmitDebugInformation

Specifies whether the binding generator should enable debug information when compiling generated binding code.

Applicable to all platforms.

.NET: the same.

BTouchExtraArgs

Any extra arguments that should be passed to the binding generator.

Applicable to all platforms.

.NET: the same.

BuildSessionId

This variable is used internally when building a project remotely from Windows.

CodesignDependsOn

This is an extension point for the build: a developer can add any targets to this property to execute those targets before the app bundle is signed.

Applicable to all platforms.

.NET: the same.

CodesignKeychain

The keychain to use during code signing.

Applicable to all platforms.

.NET: the same.

CodesignResourceRules

The path to the ResourceRules.plist to copy to the app bundle.

Applicable to all platforms.

.NET: the same.

CoreiOSSdkDirectory

This variable is used internally when building a project remotely from Windows.

CreateAppBundleDependsOn

This is an extension point for the build: a developer can add any targets to this property to execute those targets when creating the app bundle.

Applicable to all platforms.

CreateIpaDependsOn

This is an extension point for the build: a developer can add any targets to this property to execute those targets when creating an IPA.

Applicable to all platforms that build IPA archives (currently iOS, tvOS and watchOS).

.NET: the same.

DeviceSpecificBuild

If the build should be specific to the selected device.

Applicable to all platforms that support device-specific builds (currently iOS, tvOS and watchOS).

.NET: the same.

DeviceSpecificIntermediateOutputPath

The intermediate output path to use when device-specific builds are enabled.

Applicable to all platforms that support device-specific builds (currently iOS, tvOS and watchOS).

.NET: the same.

DeviceSpecificOutputPath

The output path to use when device-specific builds are enabled.

Applicable to all platforms that support device-specific builds (currently iOS, tvOS and watchOS).

.NET: the same.

EmbedOnDemandResources

If on-demand resources should be embedded in the app bundle.

Default: true

Applicable to all platforms.

.NET: the same.

EnableOnDemandResources

If on-demand resources are enabled.

Default: false for macOS, true for all other platforms.

Applicable to all platforms.

.NET: the same.

GenerateApplicationManifest

If an application manifest (Info.plist) should be generated.

Applicable to .NET projects

GeneratedSourcesDir

Where the generated source from the generator are saved.

Applicable to all platforms.

.NET: the same.

HttpClientHandler

The HttpClientHandler to use at runtime.

Applicable to all platforms (although the valid values depend on the platform).

.NET: the same.

HybridAOT

If hybrid AOT is enabled for Xamarin.Mac.

Only applicable to legacy Xamarin.Mac projects.

IOSDebugOverWiFi

If mobile projects (iOS, tvOS, watchOS) projects should be debugged over WiFi (as opposed to a USB connection).

Only applicable to iOS, tvOS and watchOS projects.

.NET: the same.

IOSDebuggerConnectOverUsb

If mobile projects (iOS, tvOS, watchOS) projects should be debugged using the USB connection (as opposed to over WiFi).

Only applicable to iOS, tvOS and watchOS projects.

.NET: the same.

IOSDebuggerHosts

The hostname or IP addresses where the app should try to connect when connecting from a mobile device.

This is typically the IP address of the Mac where the debugger is running.

Only applicable to iOS, tvOS and watchOS projects.

.NET: the same.

IOSDebuggerPort

The port where the app should try to connect when connecting from a mobile device.

This is used in conjunction with the IOSDebuggerHosts property.

Only applicable to iOS, tvOS and watchOS projects.

.NET: the same.

IPhoneResourcePrefix

The directory where resources are stored (this prefix will be removed when copying resources to the app bundle).

Applicable to all iOS, tvOS, watchOS and Mac Catalyst projects.

.NET: the same.

See also MonoMacResourcePrefix and XamMacResourcePrefix.

IncludeMonoRuntime

If the Mono runtime should be embedded with the app bundle.

Only applicable to legacy Xamarin.Mac projects.

IpaIncludeArtwork

If artwork should be included in the IPA.

Only applicable to iOS, tvOS and watchOS projects.

.NET: the same.

IsAppExtension

If a project is an app extension.

Applicable to all platforms.

.NET: the same.

IsBindingProject

If a project is a binding project.

Applicable to all platforms.

.NET: the same.

IsMacEnabled

Determines whether the current build (if a remote build) is connected to a Mac.

Applicable to all platforms that support remote builds (currently iOS, tvOS and watchOS).

IsWatchApp

If a project is a watch app project.

Only applicable to watchOS.

IsWatchExtension

If a project is a watch extension project.

Only applicable to watchOS.

IsXPCService

If a Xamarin.Mac extension is an xpc service.

Only applicable to macOS projects.

.NET: the same.

LinkMode

Specifies the link mode for the project (None, SdkOnly, Full).

Applicable to macOS projects.

.NET: the same.

See also MtouchLink.

LinkWithSwiftSystemLibraries

If set to true, the build will tell the native linker where to find Swift's system libraries.

This is useful when a native library uses Swift somehow, in which case the native linker needs to know where to find Swift's system libraries.

Currently this means these arguments will be passed to the native linker:

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

Other arguments may be added in the future.

ReferenceNativeSymbol

The item group ReferenceNativeSymbol can be used to specify how we should handle a given native symbol: either ignore it, or ask the native linker to keep it (by passing the symbol as -u ... or in a symbol file to the native linker).

There are two supported types of metadata:

  • SymbolType: either ObjectiveCClass, Function or Field. Used to compute the complete native name of a symbol (for instance, the native symbol for the Objective-C class MyClass is _OBJC_CLASS_$_MyClass, while for a function MyFunction it's just _MyFunction.
  • SymbolMode: either Ignore or not set. Ignore means to not pass the given symbol to the native linker, the default is to do so.

SymbolType is required, while SymbolMode isn't.

Example symbol to keep:

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

Example symbol to ignore:

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

RequireLinkWithAttributeForObjectiveCClassSearch

We will automatically scan all libraries for managed classes that map to existing Objective-C classes, and then create a native reference at build time for those Objective-C classes.

This way the native linker won't remove these Objective-C classes, thinking they're not used.

However, this can cause a problem if a managed class references an Objective-C class that doesn't exist. The proper fix for this is to remove such managed classes from the build, but this may be cumbersome, in particular if the managed class comes from a binary reference (such as NuGet).

In these cases, it's possible to set the property RequireLinkWithAttributeForObjectiveCClassSearch to true so that we'll only scan libraries with the [LinkWith] attribute for Objective-C classes:

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

MacOSXSdkVersion

The macOS SDK version to use for the build.

Default: automatically detected according to the default version shipped with the selected Xcode.

.NET: the same.

See also MtouchSdkVersion.

MigrateToNewXMIdentifier

Applicable to legacy Xamarin.Mac projects.

MmpDebug

Enables debug mode for app bundle creation.

Applicable to macOS projects.

.NET: the same.

See also MtouchDebug.

MonoBundlingExtraArgs

Additional arguments to mmp specifying how to create the app bundle.

Applicable to macOS projects.

.NET: some arguments are still applicable, some are not.

See also MtouchExtraArgs.

MonoMacResourcePrefix

The directory where resources are stored (this prefix will be removed when copying resources to the app bundle).

Applicable to macOS projects.

.NET: the same.

See also IPhoneResourcePrefix and XamMacResourcePrefix.

MonoSymbolArchive

A boolean property which controls whether .mSYM artifacts are created for later use with mono-symbolicate, to extract “real” filename and line number information from Release stack traces.

Only applicable to legacy Xamarin projects.

MonoTouchSdkRoot

The location of the Xamarin.iOS SDK.

Also possible to override with the MD_MTOUCH_SDK_ROOT environment variable.

Default: /Library/Frameworks/Xamarin.iOS.framework/Versions/Current

Only applicable to legacy Xamarin.iOS projects.

MtouchDebug

Enables debug mode for app bundle creation.

Applicable to iOS, tvOS, watchOS and Mac Catalyst projects.

.NET: the same.

See also MmpDebug.

MtouchEnableBitcode

A boolean property that specifies whether bitcode should be generated.

Only applicable to tvOS and watchOS projects.

.NET: the same.

MtouchFastDev

A boolean property that specifies whether incremental builds should be enabled.

Only applicable to legacy Xamarin.iOS (iOS, tvOS and watchOS) projects.

MtouchLink

Specifies the link mode for the project (None, SdkOnly, Full).

Applicable to iOS, tvOS, watchOS and Mac Catalyst projects.

.NET: the same.

See also LinkMode.

MtouchNoDSymUtil

A boolean property that specifies whether .dSYM generatiorn should be disabled.

Only applicable to iOS, tvOS, watchOS and Mac Catalyst projects.

.NET: the same.

MtouchNoSymbolStrip

A boolean property that specifies whether native symbol stripping should be disabled.

Only applicable to iOS, tvOS, watchOS and Mac Catalyst projects.

.NET: the same.

MtouchProfiling

A boolean property that specifies whether profiling should be enabled.

Only applicable to legacy Xamarin.iOS (iOS, tvOS and watchOS) projects.

See also Profiling.

MtouchSdkVersion

The iOS, tvOS or watchOS SDK version to use for the build.

Default: automatically detected according to the default version shipped with the selected Xcode.

.NET: the same.

See also MacOSXSdkVersion.

MtouchUseLlvm

A boolean property that specifies whether native code generation should be done using LLVM.

Applicable to iOS, tvOS and watchOS projects.

.NET: the same.

For .NET, LLVM is enabled by default for release builds.

MtouchUseThumb

A boolean property that specifies whether thumb ARMv7 code should be generated.

Only applicable to legacy Xamarin.iOS (iOS, tvOS and watchOS) projects.

MtouchVerbosity

A number that specifies the verbosity during parts of the build.

Only applicable to legacy Xamarin.iOS (iOS, tvOS and watchOS) projects.

Namespace

The namespace to use for generated binding code.

Applicable to all platforms.

.NET: the same.

NoBindingEmbedding

A boolean property that specifies whether native libraries should be embedded in the managed assembly when binding those native libraries.

Applicable to all platforms.

.NET: The same.

OnDemandResourcesInitialInstallTags

A string property that specifies the initial install tags for on-demand resources.

Applicable to all platforms.

.NET: The same.

OnDemandResourcesPrefetchOrder

A string property that specifies the prefetch order for on-demand resources.

Applicable to all platforms.

.NET: The same.

OnDemandResourcesUrl

A string property that specifies the resource url for on-demand resources.

Applicable to all platforms.

.NET: The same.

OptimizePNGs

A boolean property that specifies whether png images should be optimized.

Applicable to all platforms.

.NET: The same.

OptimizePngImagesDependsOn

This is an extension point for the build: a developer can add any targets to this property to execute those targets before any png images are optimized.

Applicable to all platforms.

.NET: the same.

OptimizePropertyLists

A boolean property that specifies whether property lists (plists) should be optimized.

Applicable to all platforms.

.NET: The same.

OptimizePropertyListsDependsOn

This is an extension point for the build: a developer can add any targets to this property to execute those targets before any property lists (plists) are optimized.

Applicable to all platforms.

.NET: the same.

ProcessEnums

A boolean property that specifies whether enums should be processed as an api definition in binding projects.

Applicable to all platforms.

.NET: The same.

Profiling

A boolean property that specifies whether profiling should be enabled.

Only applicable to legacy Xamarin.Mac projects.

See also MtouchProfiling.

TargetArchitectures

The architecture(s) to build for.

Applicable to all projects.

.NET: N/A, uses RuntimeIdentifier instead.

UseHardenedRuntime

A boolean property that specifies if a hardened runtime is enabled.

Applicable to macOS and Mac Catalyst projects.

.NET: the same.

UseXamMacFullFramework

A boolean property that specifies whether a Xamarin.Mac project should reference the full .NET framework.

Only applicable to legacy Xamarin.Mac projects.

UsingAppleNETSdk

A boolean property that specifies whether we're building for .NET or legacy Xamarin.

Applicable to all projects.

XamMacResourcePrefix

The directory where resources are stored (this prefix will be removed when copying resources to the app bundle).

Applicable to macOS projects.

.NET: the same.

See also IPhoneResourcePrefix and MonoMacResourcePrefix.

XamarinMacFrameworkRoot

The location of the Xamarin.Mac SDK.

Also possible to override with the XAMMAC_FRAMEWORK_PATH environment variable.

Default: /Library/Frameworks/Xamarin.Mac.framework/Versions/Current

Only applicable to legacy Xamarin.Mac projects.

MtouchExtraArgs

Additional arguments to mtouch specifying how to create the app bundle.

Applicable to iOS, tvOS, watchOS and Mac Catalyst projects.

.NET: some arguments are still applicable, some are not.

See also MonoBundlingExtraArgs.

MtouchArch

The architecture(s) to build for.

Applicable to iOS, tvOS, watchOS projects.

.NET: N/A, uses RuntimeIdentifier instead.

See also XamMacArch.

XamMacArch

The architecture(s) to build for.

Applicable to macOS projects.

.NET: N/A, uses RuntimeIdentifier instead.

HttpClientHandler and MtouchHttpClientHandler

Selects which HttpClientHandler will be the default.

  • MtouchHttpClientHandler: applicable to iOS, tvOS and watchOS projects.
  • HttpClientHandler: applicable to macOS projects.

Different platforms have different valid values:

  • iOS: "HttpClientHandler", "NSUrlSessionHandler" or "CFNetworkHandler"
  • tvOS: "HttpClientHandler" or "NSUrlSessionHandler"
  • watchOS: only "NSUrlSessionHandler"
  • macOS: "HttpClientHandler" or "NSUrlSessionHandler"

.NET: N/A, use UseNativeHttpHandler to select which HttpClientHandler implementation to use.

EnableSGenConc and MtouchEnableSGenConc

Enables the concurrent mode for the SGen garbage collector.

  • iOS, tvOS, watchOS: historically used MtouchEnableSGenConc, but it's recommended to use EnableSGenConc.
  • macOS: uses EnableSGenConc.

Applicable to all platforms.

Only applicable when using MonoVM (not when using CoreCLR).

.NET: the same

ArchiveOnBuild

If an Xcode archive should be created at the end of the build.

Applicable to all platforms.

.NET: the same.

EnableCodeSigning

If code signing is enabled.

Applicable only to macOS and Mac Catalyst apps (for other platforms we automatically determine if signing is required or not).

.NET: the same.

EnablePackageSigning

If the .pkg that was created (if CreatePackage was enabled) should be signed.

Applicable only to macOS and Mac Catalyst projects.

.NET: the same

BuildIpa

If a package (.ipa) should be created for the app bundle at the end of the build.

Applicable only to iOS and tvOS projects.

.NET: the same

CreatePackage

If a package (.pkg) should be created for the app bundle at the end of the build.

Applicable only to macOS and Mac Catalyst projects.

.NET: the same

CodeSigningKey

Specifies the code signing key to use.

Applicable only to macOS and Mac Catalyst apps, but it's recommended to use CodesignKey instead.

.NET: use CodesignKey instead

CodesignKey

Specifies the code signing key to use.

Applicable to all platforms.

.NET: the same

CodesignProvision

Specifies the provisioning profile to use when signing the app bundle.

Applicable to all platforms.

.NET: the same.

CodesignRequireProvisioningProfile

Specifies whether a provisioning profile is required when signing the app bundle.

By default we require a provisioning profile if:

  • macOS, Mac Catalyst: a provisioning profile has been specified (with the CodesignProvision property).
  • iOS, tvOS, watchOS: building for device or an entitlements file has been specified (with the CodesignEntitlements property).

Setting this property to true or false will override the default logic.

.NET: the same

CodesignEntitlements

The path to the entitlements file that specifies the entitlements the app requires.

Typically "Entitlements.plist".

In .NET 7+ we'll automatically set this to "Entitlements.plist" if such a file exists in the project root directory. This can be prevented by setting the EnableDefaultCodesignEntitlements property to false.

Applicable to all platforms.

.NET: the same.

CodesignExtraArgs

Extra arguments passed to the 'codesign' tool when signing the app bundle.

Applicable to all platforms.

.NET: the same.

EnableDefaultCodesignEntitlements

See CodesignEntitlements.

PackageSigningKey

Specifies the code signing key to sign the package when creating .pkg for a macOS and Mac Catalyst project.

Applicable only to macOS and Mac Catalyst apps.

.NET: the same.

PackagingExtraArgs

Specifies any extra arguments to pass to the 'productbuild' tool when creating .pkg for a macOS and Mac Catalyst project.

Applicable only to macOS and Mac Catalyst apps.

.NET: the same.

ProductDefinition

Applicable only to macOS and Mac Catalyst apps.

.NET: the same.

IpaPackagePath

Specifies the path to the resulting .ipa file when creating an IPA package (see BuildIpa).

Applicable only to iOS and tvOS projects.

.NET: the same

IpaPackageName

Specifies the name of the resulting .ipa file (without the path) when creating an IPA package (see BuildIpa). IpaPackagePath will override this value.

Applicable only to iOS and tvOS projects.

.NET: the same

IpaPackageDir

Specifies the directory of the resulting .ipa file when creating an IPA package (see BuildIpa). IpaPackagePath will override this value.

Applicable only to iOS and tvOS projects.

.NET: the same

PkgPackagePath

Specifies the path to the resulting .pkg file when creating a package (see CreatePackage).

Applicable only to macOS and Mac Catalyst apps.

.NET: the same.

MtouchFloat32

Determines whether 32-bit float operations should be done using 64-bit floating point math.

Disabling this option can have a hefty performance cost, especially on mobile platforms, where double precision math is considerably slower than single precision math.

Note that .NET uses double precision internally, even for float, so enabling this option affects precision and, possibly, compatibility.

Applicable to all platforms (when doing AOT compilation).

.NET: the same.

MtouchInterpreter

Enables the interpreter, and optionally takes a comma-separated list of assemblies to interpret (if prefixed with a minus sign, the assembly will be AOT-compiled instead). 'all' can be used to specify all assemblies. This argument can be specified multiple times.

Example:

  • all: interpret all the assemblies.
  • System: AOT-compile all assemblies, except System.dll, which will be interpreted.
  • all,-System.Core: interpret all assemblies, except System.Core.dll, which will be AOT-compiled.

Applicable to iOS, tvOS, watchOS and Mac Catalyst apps.

.NET: the same.

SupportedOSPlatformVersion

Specifies the minimum OS version the app can run on.

Applicable to iOS, tvOS, watchOS and Mac Catalyst apps.

This is only applicable to .NET projects.

iOSMinimumVersion

Specifies the minimum iOS version the app can run on.

Applicable to iOS; setting this value will set SupportedOSPlatformVersion for iOS projects (only).

This is only applicable to .NET projects.

tvOSMinimumVersion

Specifies the minimum tvOS version the app can run on.

Applicable to tvOS; setting this value will set SupportedOSPlatformVersion for tvOS projects (only).

This is only applicable to .NET projects.

macOSMinimumVersion

Specifies the minimum macOS version the app can run on.

Applicable to macOS; setting this value will set SupportedOSPlatformVersion for macOS projects (only).

This is only applicable to .NET projects.

MacCatalystMinimumVersion

Specifies the minimum Mac Catalyst (iOS) version the app can run on.

Applicable to Mac Catalyst; setting this value will set SupportedOSPlatformVersion for Mac Catalyst projects (only).

This is only applicable to .NET projects.

UseInterpreter

Enables the interpreter (for all assemblies).

This is equivalent to setting MtouchInterpreter=all.

Applicable to iOS, tvOS, watchOS and Mac Catalyst apps.

.NET: the same.

Build Items

Android's build items are documented here.

AdditionalAppExtensions

An item group that contains any additional app extensions to copy into the app bundle.

Applicable to all platforms.

.NET: the same.

AtlasTexture

An item group that contains atlas textures.

Applicable to all platforms.

.NET: the same.

BundleResource

Files to be copied to the app bundle.

Applicable to all platforms.

.NET: the same

CodesignBundle

Additional bundles inside the final app that should be signed.

The purpose is to include in the app signing any other bundles that are copied manually (for instance through custom MSBuild targets during the build) to the app bundle.

The path to include is the path to the app bundle to sign inside the main app bundle, including the app bundle name itself.

Example:

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

There are several metadata that can be set on the CodesignBundle item to direct how signing occurs:

Example:

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

Any metadata not set will use the corresponding property instead (for instance if the CodesignSigningKey metadata is not set, the value of the CodesignSigningKey property will be used instead.)

Introduced in .NET 7.

Applicable to all platforms.

Collada

An item group that contains atlas assets.

Applicable to all platforms.

.NET: the same.

Content

Resources (files) to be copied to the app bundle.

They will be placed in the the following directory inside the app bundle:

  • /Resources: iOS, tvOS, watchOS
  • /Contents/Resources: macOS, Mac Catalyst

It's possible to set the Link metadata to a path relative to the target directory to change the location in the app bundle.

Example:

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

would place the file in the following location:

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

Applicable to all platforms.

.NET: the same

CoreMLModel

An item group that contains CoreML models.

Applicable to all platforms.

.NET: the same.

CustomEntitlements

An item group that contains custom entitlements to add to the app.

These entitlements are processed last, and will override any other entitlements, either from the file specified with the Entitlements property, or from the provisioning profile in use (if any).

This is the 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

An item group that contains iTunes artwork for IPAs.

Applicable to all iOS, tvOS and watchOS.

.NET: the same.

ITunesMetadata

An item group that contains iTunes metadata for IPAs.

Applicable to all iOS, tvOS and watchOS.

.NET: the same.

ImageAsset

An item group that contains image assets.

Applicable to all platforms.

.NET: the same.

InterfaceDefinition

An item group that contains interface definitions (*.xib or *.storyboard files).

Applicable to all platforms.

.NET: the same.

LinkDescription

Additional xml files to the managed linker.

Applicable to all platforms.

.NET: the same

Metal

An item group that contains metal assets.

Applicable to all platforms.

.NET: the same.

NativeReference

An item group that contains any native references that should be linked into or linked with when building the native executable.

Applicable to all platforms.

.NET: the same.

ObjcBindingApiDefinition

An item group that lists all the API definitions for binding projects.

Applicable to all platforms.

.NET: the same.

ObjcBindingCoreSource

An item group that lists all the core source code for binding projects.

Applicable to all platforms.

.NET: the same.

ObjCBindingNativeFramework

An item group that lists all the native frameworks that should be included in a binding project.

Applicable to all platforms.

.NET: the same.

ObjcBindingNativeLibrary

An item group that lists all the native libraries that should be included in a binding project.

Applicable to all platforms.

.NET: the same.

PartialAppManifest

Additional partial app manifests that will be merged with the main app manifest (Info.plist).

Any values in the partial app manifests will override values in the main app manifest.

If the same value is specified in multiple partial app manifests, it's undetermined which one will be the one used.

If the developer needs to execute a target to compute what to add to the PartialAppManifest item group, it's possible to make sure this target is executed before the PartialAppManifest items are procesed by adding it to the CollectAppManifestsDependsOn property:

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

Applicable to all platforms.

.NET: the same

SceneKitAsset

An item group that contains SceneKit assets.

Applicable to all platforms.

.NET: the same.

SkipCodesignItems

An item group that specifies files or directories in the app bundle that should not be signed.

The purpose is to exclude from signing files and directories that are copied manually (for instance through custom MSBuild targets in the project file) to the app bundle, and which are already signed.

The path to include is the path to the file or directory relative to the root of the app bundle.

Example:

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

Applicable to all platforms.

.NET: the same.

Clone this wiki locally