From 851577216905ab11823817c60a5b601ebebff82e Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 16:22:29 -0400 Subject: [PATCH 01/14] Document MaciOS artifact outputs Add conceptual documentation for MaciOS build and publish artifact item groups, including metadata and query targets for app bundles, IPA packages, PKG installers, and Xcode archives. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-items.md | 50 ++++++++++++++++++++++ docs/ios/building-apps/build-properties.md | 10 +++++ docs/ios/building-apps/build-targets.md | 23 ++++++++++ 3 files changed, 83 insertions(+) diff --git a/docs/ios/building-apps/build-items.md b/docs/ios/building-apps/build-items.md index ff18c07..769b93a 100644 --- a/docs/ios/building-apps/build-items.md +++ b/docs/ios/building-apps/build-items.md @@ -248,6 +248,56 @@ An item group that contains environment variables that will be set when the app > [!NOTE] > This only applies when launching the app from the command line (`dotnet run` or `dotnet build -t:Run`), not when launching from the IDE. +## MaciOSArtifactOutput + +An item group that contains final app artifacts produced by the build. This can include: + +* `.app` app bundles for iOS, tvOS, macOS, and Mac Catalyst apps. +* `.ipa` packages when [BuildIpa](build-properties.md#buildipa) is enabled. +* `.pkg` installer packages when [CreatePackage](build-properties.md#createpackage) is enabled. +* `.xcarchive` directories when [ArchiveOnBuild](build-properties.md#archiveonbuild) is enabled. + +The following metadata is set: + +* `ArtifactKind`: The artifact kind. Possible values are `AppBundle`, `Package`, and `Archive`. +* `PackageFormat`: The artifact format. Possible values are `app`, `ipa`, `pkg`, and `xcarchive`. +* `IsDirectory`: `true` for `.app` and `.xcarchive` outputs; `false` for `.ipa` and `.pkg` outputs. +* `PlatformName`: The Apple platform name, such as `iOS`, `tvOS`, `macOS`, or `MacCatalyst`. +* `TargetPlatformIdentifier`: The target platform identifier, such as `ios`, `tvos`, `macos`, or `maccatalyst`. +* `TargetFramework`: The target framework. +* `RuntimeIdentifier`: The runtime identifier when building with `RuntimeIdentifier`. +* `RuntimeIdentifiers`: The runtime identifiers when building with `RuntimeIdentifiers`. +* `Configuration`: The build configuration. +* `RelativePath`: The artifact file or directory name. +* `AppBundlePath`: The app bundle path associated with the artifact. +* `BundleIdentifier`: The resolved app bundle identifier. +* `CodeSigned`: Whether the app bundle was code signed. +* `PackageSigned`: Whether a `.pkg` installer package was signed. This metadata is only set for `.pkg` outputs. +* `BuildIpa`: The effective [BuildIpa](build-properties.md#buildipa) value. +* `CreatePackage`: The effective [CreatePackage](build-properties.md#createpackage) value. +* `ArchiveOnBuild`: The effective [ArchiveOnBuild](build-properties.md#archiveonbuild) value. + +Example: + +```xml + + + +``` + +See also the [GetMaciOSArtifactOutputs](build-targets.md#getmaciosartifactoutputs) target. + +## MaciOSPublishedArtifactOutput + +An item group that contains the `@(MaciOSArtifactOutput)` items produced by the `Publish` target. + +This item group has the same metadata as [MaciOSArtifactOutput](#maciosartifactoutput), plus: + +* `OriginalPath`: The corresponding path from `@(MaciOSArtifactOutput)`. + ## NativeReference An item group that contains any native references that should be linked into diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index 8cb94b3..d2be634 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -109,6 +109,8 @@ Only applicable to iOS projects (since only iOS projects can be built remotely f If an Xcode archive should be created at the end of the build. +Created archives are exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. + ## BGenEmitDebugInformation Whether the `bgen` tool (the binding generator) should emit debug information or not. @@ -139,6 +141,8 @@ Only applicable to iOS and tvOS projects. See [CreatePackage](#createpackage) for macOS and Mac Catalyst projects. +Created IPA packages are exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. + ## BundleCreateDump CoreCLR has a command-line utility called [`createdump`][createdump] to create @@ -350,6 +354,8 @@ Only applicable to macOS and Mac Catalyst projects. See [BuildIpa](#buildipa) for iOS and tvOS projects. +Created PKG packages are exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. + ## Device Specifies which mobile device or simulator to target when using `dotnet run --device ` or MSBuild targets that interact with devices (such as `Run`, `Install`, or `Uninstall`). @@ -633,6 +639,8 @@ Specifies the path to the resulting .ipa file when creating an IPA package (see Only applicable to iOS and tvOS projects. +The resulting IPA is exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. + ## IsAppExtension If a project is an app extension. @@ -1103,6 +1111,8 @@ Specifies the path to the resulting .pkg file when creating a package (see [Crea Only applicable to macOS and Mac Catalyst apps. +The resulting PKG is exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. + ## PlutilPath The full path to the `plutil` command-line tool. diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index fbf0abf..3c0d449 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -44,6 +44,29 @@ $ dotnet run --device UDID Added in .NET 11. +## GetMaciOSArtifactOutputs + +Builds the project and returns the `@(MaciOSArtifactOutput)` item group. This +target can be used by custom build scripts to query final `.app`, `.ipa`, +`.pkg`, and `.xcarchive` artifacts without invoking the `Publish` target. + +```shell +$ dotnet build -t:GetMaciOSArtifactOutputs +``` + +See [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) for supported metadata. + +## GetMaciOSPublishedArtifactOutputs + +Publishes the project and returns the `@(MaciOSPublishedArtifactOutput)` item +group. + +```shell +$ dotnet publish -t:GetMaciOSPublishedArtifactOutputs +``` + +See [MaciOSPublishedArtifactOutput](build-items.md#maciospublishedartifactoutput) for supported metadata. + ## Run Builds the source code within a project and all dependencies, and then deploys and runs it From 330032148b8d3bb91808c1fe89d07406d6a39035 Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 17:01:18 -0400 Subject: [PATCH 02/14] Rename Apple package output docs Update the conceptual docs to describe the single ApplePackageOutput item group, GetApplePackageOutputs target, and reduced metadata set. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-items.md | 33 +++++----------------- docs/ios/building-apps/build-properties.md | 10 +++---- docs/ios/building-apps/build-targets.md | 22 ++++----------- 3 files changed, 18 insertions(+), 47 deletions(-) diff --git a/docs/ios/building-apps/build-items.md b/docs/ios/building-apps/build-items.md index 769b93a..0cedac3 100644 --- a/docs/ios/building-apps/build-items.md +++ b/docs/ios/building-apps/build-items.md @@ -248,9 +248,9 @@ An item group that contains environment variables that will be set when the app > [!NOTE] > This only applies when launching the app from the command line (`dotnet run` or `dotnet build -t:Run`), not when launching from the IDE. -## MaciOSArtifactOutput +## ApplePackageOutput -An item group that contains final app artifacts produced by the build. This can include: +An item group that contains final Apple app artifacts produced by the build or publish. This can include: * `.app` app bundles for iOS, tvOS, macOS, and Mac Catalyst apps. * `.ipa` packages when [BuildIpa](build-properties.md#buildipa) is enabled. @@ -259,44 +259,25 @@ An item group that contains final app artifacts produced by the build. This can The following metadata is set: -* `ArtifactKind`: The artifact kind. Possible values are `AppBundle`, `Package`, and `Archive`. * `PackageFormat`: The artifact format. Possible values are `app`, `ipa`, `pkg`, and `xcarchive`. * `IsDirectory`: `true` for `.app` and `.xcarchive` outputs; `false` for `.ipa` and `.pkg` outputs. * `PlatformName`: The Apple platform name, such as `iOS`, `tvOS`, `macOS`, or `MacCatalyst`. -* `TargetPlatformIdentifier`: The target platform identifier, such as `ios`, `tvos`, `macos`, or `maccatalyst`. -* `TargetFramework`: The target framework. -* `RuntimeIdentifier`: The runtime identifier when building with `RuntimeIdentifier`. -* `RuntimeIdentifiers`: The runtime identifiers when building with `RuntimeIdentifiers`. -* `Configuration`: The build configuration. -* `RelativePath`: The artifact file or directory name. * `AppBundlePath`: The app bundle path associated with the artifact. * `BundleIdentifier`: The resolved app bundle identifier. -* `CodeSigned`: Whether the app bundle was code signed. -* `PackageSigned`: Whether a `.pkg` installer package was signed. This metadata is only set for `.pkg` outputs. -* `BuildIpa`: The effective [BuildIpa](build-properties.md#buildipa) value. -* `CreatePackage`: The effective [CreatePackage](build-properties.md#createpackage) value. -* `ArchiveOnBuild`: The effective [ArchiveOnBuild](build-properties.md#archiveonbuild) value. +* `Signed`: `true` when the app or package output is signed; otherwise `false`. Example: ```xml - + ``` -See also the [GetMaciOSArtifactOutputs](build-targets.md#getmaciosartifactoutputs) target. - -## MaciOSPublishedArtifactOutput - -An item group that contains the `@(MaciOSArtifactOutput)` items produced by the `Publish` target. - -This item group has the same metadata as [MaciOSArtifactOutput](#maciosartifactoutput), plus: - -* `OriginalPath`: The corresponding path from `@(MaciOSArtifactOutput)`. +See also the [GetApplePackageOutputs](build-targets.md#getapplepackageoutputs) target. ## NativeReference diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index d2be634..e467b07 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -109,7 +109,7 @@ Only applicable to iOS projects (since only iOS projects can be built remotely f If an Xcode archive should be created at the end of the build. -Created archives are exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. +Created archives are exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. ## BGenEmitDebugInformation @@ -141,7 +141,7 @@ Only applicable to iOS and tvOS projects. See [CreatePackage](#createpackage) for macOS and Mac Catalyst projects. -Created IPA packages are exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. +Created IPA packages are exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. ## BundleCreateDump @@ -354,7 +354,7 @@ Only applicable to macOS and Mac Catalyst projects. See [BuildIpa](#buildipa) for iOS and tvOS projects. -Created PKG packages are exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. +Created PKG packages are exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. ## Device @@ -639,7 +639,7 @@ Specifies the path to the resulting .ipa file when creating an IPA package (see Only applicable to iOS and tvOS projects. -The resulting IPA is exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. +The resulting IPA is exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. ## IsAppExtension @@ -1111,7 +1111,7 @@ Specifies the path to the resulting .pkg file when creating a package (see [Crea Only applicable to macOS and Mac Catalyst apps. -The resulting PKG is exposed in the [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) item group. +The resulting PKG is exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. ## PlutilPath diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 3c0d449..46a6231 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -44,28 +44,18 @@ $ dotnet run --device UDID Added in .NET 11. -## GetMaciOSArtifactOutputs +## GetApplePackageOutputs -Builds the project and returns the `@(MaciOSArtifactOutput)` item group. This +Builds the project and returns the `@(ApplePackageOutput)` item group. This target can be used by custom build scripts to query final `.app`, `.ipa`, -`.pkg`, and `.xcarchive` artifacts without invoking the `Publish` target. +`.pkg`, and `.xcarchive` artifacts. The `Publish` target also populates the +same item group for packages it creates. ```shell -$ dotnet build -t:GetMaciOSArtifactOutputs +$ dotnet build -t:GetApplePackageOutputs ``` -See [MaciOSArtifactOutput](build-items.md#maciosartifactoutput) for supported metadata. - -## GetMaciOSPublishedArtifactOutputs - -Publishes the project and returns the `@(MaciOSPublishedArtifactOutput)` item -group. - -```shell -$ dotnet publish -t:GetMaciOSPublishedArtifactOutputs -``` - -See [MaciOSPublishedArtifactOutput](build-items.md#maciospublishedartifactoutput) for supported metadata. +See [ApplePackageOutput](build-items.md#applepackageoutput) for supported metadata. ## Run From 6454d20ff73f0fdbaa1b62a53ad6e3251d39adb6 Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 17:11:34 -0400 Subject: [PATCH 03/14] Document package signing metadata Clarify that ApplePackageOutput Signed reflects app code signing and PackageSigned reflects .pkg installer package signing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-items.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/ios/building-apps/build-items.md b/docs/ios/building-apps/build-items.md index 0cedac3..77a63fc 100644 --- a/docs/ios/building-apps/build-items.md +++ b/docs/ios/building-apps/build-items.md @@ -264,7 +264,8 @@ The following metadata is set: * `PlatformName`: The Apple platform name, such as `iOS`, `tvOS`, `macOS`, or `MacCatalyst`. * `AppBundlePath`: The app bundle path associated with the artifact. * `BundleIdentifier`: The resolved app bundle identifier. -* `Signed`: `true` when the app or package output is signed; otherwise `false`. +* `Signed`: `true` when the app bundle associated with the output is code signed; otherwise `false`. +* `PackageSigned`: For `.pkg` outputs, `true` when installer package signing is enabled; otherwise `false`. This metadata is not set for other formats. Example: @@ -272,7 +273,7 @@ Example: ``` From 9ab6201a40427e8651747b43db132fb2affb295f Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 17:15:02 -0400 Subject: [PATCH 04/14] Remove package signing metadata docs Drop Signed and PackageSigned from the ApplePackageOutput conceptual docs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-items.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/ios/building-apps/build-items.md b/docs/ios/building-apps/build-items.md index 77a63fc..30abc8d 100644 --- a/docs/ios/building-apps/build-items.md +++ b/docs/ios/building-apps/build-items.md @@ -264,8 +264,6 @@ The following metadata is set: * `PlatformName`: The Apple platform name, such as `iOS`, `tvOS`, `macOS`, or `MacCatalyst`. * `AppBundlePath`: The app bundle path associated with the artifact. * `BundleIdentifier`: The resolved app bundle identifier. -* `Signed`: `true` when the app bundle associated with the output is code signed; otherwise `false`. -* `PackageSigned`: For `.pkg` outputs, `true` when installer package signing is enabled; otherwise `false`. This metadata is not set for other formats. Example: @@ -273,7 +271,7 @@ Example: ``` From 8261fb572249fc7b3068e7b67bb6b6b1d9d15e6e Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 17:18:15 -0400 Subject: [PATCH 05/14] Remove app bundle path metadata docs Drop AppBundlePath from the ApplePackageOutput conceptual docs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-items.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/ios/building-apps/build-items.md b/docs/ios/building-apps/build-items.md index 30abc8d..38d360f 100644 --- a/docs/ios/building-apps/build-items.md +++ b/docs/ios/building-apps/build-items.md @@ -262,7 +262,6 @@ The following metadata is set: * `PackageFormat`: The artifact format. Possible values are `app`, `ipa`, `pkg`, and `xcarchive`. * `IsDirectory`: `true` for `.app` and `.xcarchive` outputs; `false` for `.ipa` and `.pkg` outputs. * `PlatformName`: The Apple platform name, such as `iOS`, `tvOS`, `macOS`, or `MacCatalyst`. -* `AppBundlePath`: The app bundle path associated with the artifact. * `BundleIdentifier`: The resolved app bundle identifier. Example: From 1ee410f34adaf167d02c6e6be36bcb563544eba3 Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 18:31:41 -0400 Subject: [PATCH 06/14] Rename application artifact docs Update conceptual docs to use ApplicationArtifact and GetApplicationArtifacts for the shared application artifact item surface. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-items.md | 12 ++++++------ docs/ios/building-apps/build-properties.md | 10 +++++----- docs/ios/building-apps/build-targets.md | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/ios/building-apps/build-items.md b/docs/ios/building-apps/build-items.md index 38d360f..15f0e83 100644 --- a/docs/ios/building-apps/build-items.md +++ b/docs/ios/building-apps/build-items.md @@ -248,9 +248,9 @@ An item group that contains environment variables that will be set when the app > [!NOTE] > This only applies when launching the app from the command line (`dotnet run` or `dotnet build -t:Run`), not when launching from the IDE. -## ApplePackageOutput +## ApplicationArtifact -An item group that contains final Apple app artifacts produced by the build or publish. This can include: +An item group that contains final application artifacts produced by Apple platform builds and publishes. The item identity is the path to the artifact. This can include: * `.app` app bundles for iOS, tvOS, macOS, and Mac Catalyst apps. * `.ipa` packages when [BuildIpa](build-properties.md#buildipa) is enabled. @@ -267,15 +267,15 @@ The following metadata is set: Example: ```xml - + ``` -See also the [GetApplePackageOutputs](build-targets.md#getapplepackageoutputs) target. +See also the [GetApplicationArtifacts](build-targets.md#getapplicationartifacts) target. ## NativeReference diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index e467b07..7ff2589 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -109,7 +109,7 @@ Only applicable to iOS projects (since only iOS projects can be built remotely f If an Xcode archive should be created at the end of the build. -Created archives are exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. +Created archives are exposed in the [ApplicationArtifact](build-items.md#applicationartifact) item group. ## BGenEmitDebugInformation @@ -141,7 +141,7 @@ Only applicable to iOS and tvOS projects. See [CreatePackage](#createpackage) for macOS and Mac Catalyst projects. -Created IPA packages are exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. +Created IPA packages are exposed in the [ApplicationArtifact](build-items.md#applicationartifact) item group. ## BundleCreateDump @@ -354,7 +354,7 @@ Only applicable to macOS and Mac Catalyst projects. See [BuildIpa](#buildipa) for iOS and tvOS projects. -Created PKG packages are exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. +Created PKG packages are exposed in the [ApplicationArtifact](build-items.md#applicationartifact) item group. ## Device @@ -639,7 +639,7 @@ Specifies the path to the resulting .ipa file when creating an IPA package (see Only applicable to iOS and tvOS projects. -The resulting IPA is exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. +The resulting IPA is exposed in the [ApplicationArtifact](build-items.md#applicationartifact) item group. ## IsAppExtension @@ -1111,7 +1111,7 @@ Specifies the path to the resulting .pkg file when creating a package (see [Crea Only applicable to macOS and Mac Catalyst apps. -The resulting PKG is exposed in the [ApplePackageOutput](build-items.md#applepackageoutput) item group. +The resulting PKG is exposed in the [ApplicationArtifact](build-items.md#applicationartifact) item group. ## PlutilPath diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 46a6231..e0f5047 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -44,18 +44,18 @@ $ dotnet run --device UDID Added in .NET 11. -## GetApplePackageOutputs +## GetApplicationArtifacts -Builds the project and returns the `@(ApplePackageOutput)` item group. This +Builds the project and returns the `@(ApplicationArtifact)` item group. This target can be used by custom build scripts to query final `.app`, `.ipa`, `.pkg`, and `.xcarchive` artifacts. The `Publish` target also populates the -same item group for packages it creates. +same item group for artifacts it creates. ```shell -$ dotnet build -t:GetApplePackageOutputs +$ dotnet build -t:GetApplicationArtifacts ``` -See [ApplePackageOutput](build-items.md#applepackageoutput) for supported metadata. +See [ApplicationArtifact](build-items.md#applicationartifact) for supported metadata. ## Run From a2a4f092509808253367a386451e4e1d2bcbeac1 Mon Sep 17 00:00:00 2001 From: redth Date: Tue, 16 Jun 2026 21:31:33 -0400 Subject: [PATCH 07/14] Document application artifact extension point Add GetApplicationArtifactsDependsOn docs for enriching ApplicationArtifact metadata before the query target returns. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 27 ++++++++++++++++++++++ docs/ios/building-apps/build-targets.md | 4 ++++ 2 files changed, 31 insertions(+) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index 7ff2589..fd4801c 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -541,6 +541,33 @@ Default: true Where the generated source from the generator are saved. +## GetApplicationArtifactsDependsOn + +A semi-colon delimited property that can be used to extend the +[GetApplicationArtifacts](build-targets.md#getapplicationartifacts) target. +MSBuild targets added to this property will execute after the platform build +has collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` +returns them. + +This can be used by SDKs such as .NET MAUI to add shared application metadata +to platform-produced artifacts. + +Example: + +```xml + + $(GetApplicationArtifactsDependsOn);AddApplicationArtifactMetadata + + + + + + $(ApplicationTitle) + + + +``` + ## IBToolPath The full path to the `ibtool` tool. diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index e0f5047..5297110 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -57,6 +57,10 @@ $ dotnet build -t:GetApplicationArtifacts See [ApplicationArtifact](build-items.md#applicationartifact) for supported metadata. +Targets that need to add or update `@(ApplicationArtifact)` metadata before +`GetApplicationArtifacts` returns can append to +[GetApplicationArtifactsDependsOn](build-properties.md#getapplicationartifactsdependson). + ## Run Builds the source code within a project and all dependencies, and then deploys and runs it From 459aa946438e521f785a85e1a18932d87aec4c0f Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 10:06:38 -0400 Subject: [PATCH 08/14] Document publish artifact extensions Clarify that GetApplicationArtifactsDependsOn also applies before Publish returns ApplicationArtifact items. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 8 ++++---- docs/ios/building-apps/build-targets.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index fd4801c..992c0a7 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -544,10 +544,10 @@ Where the generated source from the generator are saved. ## GetApplicationArtifactsDependsOn A semi-colon delimited property that can be used to extend the -[GetApplicationArtifacts](build-targets.md#getapplicationartifacts) target. -MSBuild targets added to this property will execute after the platform build -has collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` -returns them. +[GetApplicationArtifacts](build-targets.md#getapplicationartifacts) and +`Publish` targets. MSBuild targets added to this property will execute after +the platform build has collected `@(ApplicationArtifact)` items and before +`GetApplicationArtifacts` or `Publish` returns them. This can be used by SDKs such as .NET MAUI to add shared application metadata to platform-produced artifacts. diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 5297110..5e83d3f 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -48,8 +48,8 @@ Added in .NET 11. Builds the project and returns the `@(ApplicationArtifact)` item group. This target can be used by custom build scripts to query final `.app`, `.ipa`, -`.pkg`, and `.xcarchive` artifacts. The `Publish` target also populates the -same item group for artifacts it creates. +`.pkg`, and `.xcarchive` artifacts. The `Publish` target returns the same item +group for artifacts it creates. ```shell $ dotnet build -t:GetApplicationArtifacts @@ -58,7 +58,7 @@ $ dotnet build -t:GetApplicationArtifacts See [ApplicationArtifact](build-items.md#applicationartifact) for supported metadata. Targets that need to add or update `@(ApplicationArtifact)` metadata before -`GetApplicationArtifacts` returns can append to +`GetApplicationArtifacts` or `Publish` returns can append to [GetApplicationArtifactsDependsOn](build-properties.md#getapplicationartifactsdependson). ## Run From b47f869658d8187920c05a7a91d9004fde3c73a8 Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 11:53:30 -0400 Subject: [PATCH 09/14] Clarify artifact metadata extension guidance Document that GetApplicationArtifactsDependsOn extension targets should update platform-produced ApplicationArtifact items when adding metadata, while only adding new items for additional artifacts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index 992c0a7..2ed5fcc 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -550,7 +550,9 @@ the platform build has collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` or `Publish` returns them. This can be used by SDKs such as .NET MAUI to add shared application metadata -to platform-produced artifacts. +to platform-produced artifacts. Extension targets should update existing +`@(ApplicationArtifact)` items to add metadata; they should only add new items +when introducing additional artifacts. Example: From 102f52b598314b7a911e3ef8bba08426e2b73bec Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 12:14:17 -0400 Subject: [PATCH 10/14] Document artifact extension ordering Clarify that platform artifact population is mandatory before GetApplicationArtifactsDependsOn extension targets run. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 3 ++- docs/ios/building-apps/build-targets.md | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index 2ed5fcc..a38431b 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -545,7 +545,8 @@ Where the generated source from the generator are saved. A semi-colon delimited property that can be used to extend the [GetApplicationArtifacts](build-targets.md#getapplicationartifacts) and -`Publish` targets. MSBuild targets added to this property will execute after +`Publish` targets. The platform build is a mandatory dependency of +`GetApplicationArtifacts`; MSBuild targets added to this property execute after the platform build has collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` or `Publish` returns them. diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 5e83d3f..71e2a97 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -47,9 +47,10 @@ Added in .NET 11. ## GetApplicationArtifacts Builds the project and returns the `@(ApplicationArtifact)` item group. This -target can be used by custom build scripts to query final `.app`, `.ipa`, -`.pkg`, and `.xcarchive` artifacts. The `Publish` target returns the same item -group for artifacts it creates. +target always runs the platform build first so `.app`, `.ipa`, `.pkg`, and +`.xcarchive` artifacts are populated before any custom metadata extension +targets run. The `Publish` target returns the same item group for artifacts it +creates. ```shell $ dotnet build -t:GetApplicationArtifacts From 45bbf95d3a231ed23761a735eceb5953e4848875 Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 13:15:15 -0400 Subject: [PATCH 11/14] Use dotnet build artifact query examples Update ApplicationArtifact target-result examples to use dotnet build with -getTargetResult for GetApplicationArtifacts and Publish. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-targets.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 71e2a97..723eabd 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -53,7 +53,8 @@ targets run. The `Publish` target returns the same item group for artifacts it creates. ```shell -$ dotnet build -t:GetApplicationArtifacts +$ dotnet build MyApp.csproj -t:GetApplicationArtifacts -getTargetResult:GetApplicationArtifacts +$ dotnet build MyApp.csproj -t:Publish -getTargetResult:Publish ``` See [ApplicationArtifact](build-items.md#applicationartifact) for supported metadata. From 6ac7b7d6c3aacb668d6d9397201c4c2a4582bd87 Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 16:03:41 -0400 Subject: [PATCH 12/14] Clarify macios application artifact creation Document that GetApplicationArtifacts runs a mandatory artifact creation step before metadata extension targets. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 10 ++++++---- docs/ios/building-apps/build-targets.md | 9 +++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index a38431b..42ec66f 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -545,10 +545,12 @@ Where the generated source from the generator are saved. A semi-colon delimited property that can be used to extend the [GetApplicationArtifacts](build-targets.md#getapplicationartifacts) and -`Publish` targets. The platform build is a mandatory dependency of -`GetApplicationArtifacts`; MSBuild targets added to this property execute after -the platform build has collected `@(ApplicationArtifact)` items and before -`GetApplicationArtifacts` or `Publish` returns them. +`Publish` targets. Application artifact creation is a mandatory dependency of +`GetApplicationArtifacts`; it runs the platform build and the Apple +app/package/archive artifact producer targets before MSBuild targets added to +this property execute. Extension targets run after the platform targets have +collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` or +`Publish` returns them. This can be used by SDKs such as .NET MAUI to add shared application metadata to platform-produced artifacts. Extension targets should update existing diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 723eabd..0513e5b 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -47,10 +47,11 @@ Added in .NET 11. ## GetApplicationArtifacts Builds the project and returns the `@(ApplicationArtifact)` item group. This -target always runs the platform build first so `.app`, `.ipa`, `.pkg`, and -`.xcarchive` artifacts are populated before any custom metadata extension -targets run. The `Publish` target returns the same item group for artifacts it -creates. +target always runs a mandatory application artifact creation step first. That +step runs the platform build and the Apple app/package/archive artifact producer +targets so `.app`, `.ipa`, `.pkg`, and `.xcarchive` artifacts are populated +before any custom metadata extension targets run. The `Publish` target returns +the same item group for artifacts it creates. ```shell $ dotnet build MyApp.csproj -t:GetApplicationArtifacts -getTargetResult:GetApplicationArtifacts From ee25cc9d6a13ef8535bf68c91a7d0f1f09b6510d Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 16:06:41 -0400 Subject: [PATCH 13/14] Clarify optional macios artifact gates Document that mandatory ApplicationArtifact creation preserves the existing IPA, PKG, and archive build-property gates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 4 +++- docs/ios/building-apps/build-targets.md | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index 42ec66f..4c42be7 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -548,7 +548,9 @@ A semi-colon delimited property that can be used to extend the `Publish` targets. Application artifact creation is a mandatory dependency of `GetApplicationArtifacts`; it runs the platform build and the Apple app/package/archive artifact producer targets before MSBuild targets added to -this property execute. Extension targets run after the platform targets have +this property execute. Those producer targets keep their existing conditions, so +IPA, PKG, and archive artifacts are only created when their corresponding build +properties request them. Extension targets run after the platform targets have collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` or `Publish` returns them. diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index 0513e5b..c4cf5d6 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -50,8 +50,10 @@ Builds the project and returns the `@(ApplicationArtifact)` item group. This target always runs a mandatory application artifact creation step first. That step runs the platform build and the Apple app/package/archive artifact producer targets so `.app`, `.ipa`, `.pkg`, and `.xcarchive` artifacts are populated -before any custom metadata extension targets run. The `Publish` target returns -the same item group for artifacts it creates. +before any custom metadata extension targets run. These producer targets keep +their existing conditions, so IPA, PKG, and archive artifacts are only created +when their corresponding build properties request them. The `Publish` target +returns the same item group for artifacts it creates. ```shell $ dotnet build MyApp.csproj -t:GetApplicationArtifacts -getTargetResult:GetApplicationArtifacts From 1253d56ad77d624cb578676394eecccfdb43c0e3 Mon Sep 17 00:00:00 2001 From: redth Date: Wed, 17 Jun 2026 16:17:59 -0400 Subject: [PATCH 14/14] Simplify macios artifact target docs Document the direct Build dependency for GetApplicationArtifacts and remove private artifact creation wording. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/ios/building-apps/build-properties.md | 12 ++++-------- docs/ios/building-apps/build-targets.md | 11 ++++------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/docs/ios/building-apps/build-properties.md b/docs/ios/building-apps/build-properties.md index 4c42be7..cbe1d2c 100644 --- a/docs/ios/building-apps/build-properties.md +++ b/docs/ios/building-apps/build-properties.md @@ -545,14 +545,10 @@ Where the generated source from the generator are saved. A semi-colon delimited property that can be used to extend the [GetApplicationArtifacts](build-targets.md#getapplicationartifacts) and -`Publish` targets. Application artifact creation is a mandatory dependency of -`GetApplicationArtifacts`; it runs the platform build and the Apple -app/package/archive artifact producer targets before MSBuild targets added to -this property execute. Those producer targets keep their existing conditions, so -IPA, PKG, and archive artifacts are only created when their corresponding build -properties request them. Extension targets run after the platform targets have -collected `@(ApplicationArtifact)` items and before `GetApplicationArtifacts` or -`Publish` returns them. +`Publish` targets. `Build` is a mandatory dependency of +`GetApplicationArtifacts`; MSBuild targets added to this property execute after +the platform build has collected `@(ApplicationArtifact)` items and before +`GetApplicationArtifacts` or `Publish` returns them. This can be used by SDKs such as .NET MAUI to add shared application metadata to platform-produced artifacts. Extension targets should update existing diff --git a/docs/ios/building-apps/build-targets.md b/docs/ios/building-apps/build-targets.md index c4cf5d6..4e530c4 100644 --- a/docs/ios/building-apps/build-targets.md +++ b/docs/ios/building-apps/build-targets.md @@ -47,13 +47,10 @@ Added in .NET 11. ## GetApplicationArtifacts Builds the project and returns the `@(ApplicationArtifact)` item group. This -target always runs a mandatory application artifact creation step first. That -step runs the platform build and the Apple app/package/archive artifact producer -targets so `.app`, `.ipa`, `.pkg`, and `.xcarchive` artifacts are populated -before any custom metadata extension targets run. These producer targets keep -their existing conditions, so IPA, PKG, and archive artifacts are only created -when their corresponding build properties request them. The `Publish` target -returns the same item group for artifacts it creates. +target always runs `Build` first so platform `.app`, `.ipa`, `.pkg`, and +`.xcarchive` artifacts are produced and collected before any custom metadata +extension targets run. The `Publish` target returns the same item group for +artifacts it creates. ```shell $ dotnet build MyApp.csproj -t:GetApplicationArtifacts -getTargetResult:GetApplicationArtifacts