diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/targets/net8.0-ios/targets.xml b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net8.0-ios/targets.xml
index 3eb9720af5..c6dbba8dfd 100644
--- a/csharp/src/Microsoft.ML.OnnxRuntime/targets/net8.0-ios/targets.xml
+++ b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net8.0-ios/targets.xml
@@ -1,7 +1,7 @@
-
+
Static
True
True
@@ -10,4 +10,4 @@
CoreML
-
\ No newline at end of file
+
diff --git a/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml b/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml
index 0368c91290..74fc64fa53 100644
--- a/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml
+++ b/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml
@@ -107,12 +107,9 @@ stages:
--build_dir "$(Build.BinariesDirectory)/ios_framework" \
tools/ci_build/github/apple/default_full_ios_framework_build_settings.json
mkdir $(Build.BinariesDirectory)/artifacts
- mkdir -p $(Build.BinariesDirectory)/artifacts_staging/onnxruntime-ios-xcframework-$(OnnxRuntimeVersion)
- cp -R $(Build.BinariesDirectory)/ios_framework/framework_out/onnxruntime.xcframework \
- $(Build.BinariesDirectory)/artifacts_staging/onnxruntime-ios-xcframework-$(OnnxRuntimeVersion)
- pushd $(Build.BinariesDirectory)/artifacts_staging
- zip -vry $(Build.BinariesDirectory)/artifacts/onnxruntime_xcframework.zip \
- onnxruntime-ios-xcframework-$(OnnxRuntimeVersion)
+ pushd $(Build.BinariesDirectory)/ios_framework/framework_out
+ zip -vry $(Build.BinariesDirectory)/artifacts/onnxruntime_ios_xcframework.$(OnnxRuntimeVersion).zip \
+ onnxruntime.xcframework
popd
displayName: "Build Apple xcframework"
diff --git a/tools/ci_build/github/windows/extract_nuget_files.ps1 b/tools/ci_build/github/windows/extract_nuget_files.ps1
index 68757e25b0..095153cb6a 100644
--- a/tools/ci_build/github/windows/extract_nuget_files.ps1
+++ b/tools/ci_build/github/windows/extract_nuget_files.ps1
@@ -10,7 +10,8 @@ New-Item -Path $nuget_artifacts_dir -ItemType directory
## .zip files
# unzip directly
-Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\nuget-artifact -Filter *.zip |
+# exclude the iOS xcframework as we need to leave that zipped up to preserve symlinks
+Get-ChildItem -Path $Env:BUILD_BINARIESDIRECTORY\nuget-artifact\* -Include *.zip -Exclude onnxruntime_ios_xcframework.*.zip |
Foreach-Object {
$cmd = "7z.exe x $($_.FullName) -y -o$nuget_artifacts_dir"
Write-Output $cmd
@@ -34,6 +35,23 @@ Foreach-Object {
Invoke-Expression -Command $cmd
}
+# process iOS xcframework
+$xcframeworks = Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\nuget-artifact -Filter onnxruntime_ios_xcframework.*.zip
+if ($xcframeworks.Count -eq 1) {
+ $xcframework = $xcframeworks[0]
+ $target_dir = "$nuget_artifacts_dir\onnxruntime-ios-xcframework"
+ # remove version info from filename and use required filename format
+ $target_file = "$target_dir\onnxruntime.xcframework.zip"
+ New-Item -Path $target_dir -ItemType directory
+
+ Write-Output "Copy-Item $($xcframework.FullName) $target_file"
+ Copy-Item $xcframework.FullName $target_file
+}
+elseif ($xcframeworks.Count -gt 1) {
+ Write-Error "Expected at most one onnxruntime_ios_xcframework*.zip file but got: [$xcframeworks]"
+}
+
+
# copy android AAR.
# for full build of onnxruntime Android AAR, there should only be one .aar file
# called onnxruntime-android-x.y.z.aar or onnxruntime-training-android-x.y.z.aar but sanity check that
diff --git a/tools/nuget/generate_nuspec_for_native_nuget.py b/tools/nuget/generate_nuspec_for_native_nuget.py
index a005bd4c4b..2dda41a5a3 100644
--- a/tools/nuget/generate_nuspec_for_native_nuget.py
+++ b/tools/nuget/generate_nuspec_for_native_nuget.py
@@ -105,8 +105,10 @@ def generate_file_list_for_ep(nuget_artifacts_dir, ep, files_list, include_pdbs,
if child_file.suffix in [".aar"]:
files_list.append('')
- if child.name == "onnxruntime-ios-xcframework":
- files_list.append('') # noqa: ISC001
+ if child.name == "onnxruntime-ios":
+ for child_file in child.iterdir():
+ if child_file.suffix in [".zip"]:
+ files_list.append('')
def parse_arguments():