diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/Microsoft.ML.OnnxRuntime.csproj b/csharp/src/Microsoft.ML.OnnxRuntime/Microsoft.ML.OnnxRuntime.csproj index 3711978cff..661a9e8cba 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/Microsoft.ML.OnnxRuntime.csproj +++ b/csharp/src/Microsoft.ML.OnnxRuntime/Microsoft.ML.OnnxRuntime.csproj @@ -37,7 +37,7 @@ we can add .net6 support to other packages later as needed --> - net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst;net6.0-macos + net6.0;net6.0-android;net6.0-ios;net6.0-macos diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.android.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.android.cs deleted file mode 100644 index 4d5a05da4f..0000000000 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.android.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Microsoft.ML.OnnxRuntime -{ - internal class NativeLib - { - // define the library name required for android - internal const string DllName = "libonnxruntime.so"; - } -} \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.ios.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.ios.cs deleted file mode 100644 index ad5cbcb413..0000000000 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.ios.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Microsoft.ML.OnnxRuntime -{ - internal class NativeLib - { - // define the library name required for iOS - internal const string DllName = "__Internal"; - } -} \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.net.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.net.cs deleted file mode 100644 index 0514be6775..0000000000 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.net.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Microsoft.ML.OnnxRuntime -{ - internal class NativeLib - { - // define the library name required for net targets - internal const string DllName = "onnxruntime"; - } -} \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.netstandard.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.netstandard.cs deleted file mode 100644 index 832de058a2..0000000000 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeLib.netstandard.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Microsoft.ML.OnnxRuntime -{ - internal class NativeLib - { - // define the library name required for netstandard targets - internal const string DllName = "onnxruntime"; - } -} \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs index 70e46c286e..f008d2fbff 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs @@ -425,6 +425,21 @@ namespace Microsoft.ML.OnnxRuntime typeof(DSessionOptionsAppendExecutionProvider)); } + internal class NativeLib + { +#if __ANDROID__ + // define the library name required for android + internal const string DllName = "libonnxruntime.so"; +#elif __IOS__ + // define the library name required for iOS + internal const string DllName = "__Internal"; +#else + internal const string DllName = "onnxruntime"; +#endif + // TODO: Does macos need special handling or will 'onnxruntime' -> libonnxruntime.dylib? + } + + [DllImport(NativeLib.DllName, CharSet = CharSet.Ansi)] public static extern ref OrtApiBase OrtGetApiBase(); diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-android/targets.xml b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-android/targets.xml new file mode 100644 index 0000000000..54576a67d2 --- /dev/null +++ b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-android/targets.xml @@ -0,0 +1,8 @@ + + + + + %(Filename)%(Extension) + + + \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-ios/targets.xml b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-ios/targets.xml new file mode 100644 index 0000000000..02043bcad2 --- /dev/null +++ b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-ios/targets.xml @@ -0,0 +1,21 @@ + + + + + Framework + True + True + True + -lc++ + CoreML + + + Framework + True + True + True + -lc++ + CoreML + + + \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-macos/targets.xml b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-macos/targets.xml new file mode 100644 index 0000000000..63d4461ad1 --- /dev/null +++ b/csharp/src/Microsoft.ML.OnnxRuntime/targets/net6.0-macos/targets.xml @@ -0,0 +1,21 @@ + + + + + Framework + True + True + True + -lc++ + CoreML + + + Framework + True + True + True + -lc++ + CoreML + + + \ No newline at end of file diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/targets/netstandard/targets.xml b/csharp/src/Microsoft.ML.OnnxRuntime/targets/netstandard/targets.xml index b2a3149434..b8bb5efc7c 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/targets/netstandard/targets.xml +++ b/csharp/src/Microsoft.ML.OnnxRuntime/targets/netstandard/targets.xml @@ -9,7 +9,8 @@ diff --git a/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml b/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml index 530ad9177e..d07d6ac1e5 100644 --- a/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml +++ b/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml @@ -485,16 +485,16 @@ jobs: displayName: 'Create models link' - task: NuGetToolInstaller@0 - displayName: Use Nuget 5.7.0 + displayName: Use Nuget 6.2.1 inputs: - versionSpec: 5.7.0 + versionSpec: 6.2.1 - task: PowerShell@2 displayName: Install .NET 6 workloads inputs: targetType: 'inline' script: | - dotnet workload install android ios maccatalyst macos + dotnet workload install android ios macos workingDirectory: '$(Build.SourcesDirectory)\csharp' - task: PowerShell@2 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 8ed4d01ac8..1ee5868047 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 @@ -423,18 +423,18 @@ jobs: workingDirectory: '$(Build.BinariesDirectory)' displayName: 'Create models link' - task: NuGetToolInstaller@0 - displayName: Use Nuget 5.7.0 + displayName: Use Nuget 6.2.1 inputs: - versionSpec: 5.7.0 + versionSpec: 6.2.1 - task: PowerShell@2 displayName: Install .NET 6 workloads inputs: targetType: 'inline' script: | - dotnet workload install android ios maccatalyst macos + dotnet workload install android ios macos workingDirectory: '$(Build.SourcesDirectory)\csharp' - + - task: PowerShell@2 displayName: Build Microsoft.ML.OnnxRuntime .NET 6 targets using dotnet inputs: diff --git a/tools/nuget/generate_nuspec_for_native_nuget.py b/tools/nuget/generate_nuspec_for_native_nuget.py index 974598ca58..46af293e8d 100644 --- a/tools/nuget/generate_nuspec_for_native_nuget.py +++ b/tools/nuget/generate_nuspec_for_native_nuget.py @@ -240,6 +240,18 @@ def generate_dependencies(xml_text, package_name, version, dependency_id, depend xml_text.append('') xml_text.append('') xml_text.append("") + # Support net6.0-android + xml_text.append('') + xml_text.append('') + xml_text.append("") + # Support net6.0-ios + xml_text.append('') + xml_text.append('') + xml_text.append("") + # Support net6.0-macos + xml_text.append('') + xml_text.append('') + xml_text.append("") # Support Native C++ if include_dml: xml_text.append('') @@ -861,7 +873,6 @@ def generate_files(list, args): "monoandroid11.0", args.package_name + ".targets", ) - os.system(copy_command + " " + monoandroid_source_targets + " " + monoandroid_target_targets) xamarinios_source_targets = os.path.join( args.sources_path, "csharp", "src", "Microsoft.ML.OnnxRuntime", "targets", "xamarinios10", "targets.xml" @@ -875,17 +886,85 @@ def generate_files(list, args): "xamarinios10", args.package_name + ".targets", ) + + net6_android_source_targets = os.path.join( + args.sources_path, + "csharp", + "src", + "Microsoft.ML.OnnxRuntime", + "targets", + "net6.0-android", + "targets.xml", + ) + net6_android_target_targets = os.path.join( + args.sources_path, + "csharp", + "src", + "Microsoft.ML.OnnxRuntime", + "targets", + "net6.0-android", + args.package_name + ".targets", + ) + + net6_ios_source_targets = os.path.join( + args.sources_path, "csharp", "src", "Microsoft.ML.OnnxRuntime", "targets", "net6.0-ios", "targets.xml" + ) + net6_ios_target_targets = os.path.join( + args.sources_path, + "csharp", + "src", + "Microsoft.ML.OnnxRuntime", + "targets", + "net6.0-ios", + args.package_name + ".targets", + ) + + net6_macos_source_targets = os.path.join( + args.sources_path, "csharp", "src", "Microsoft.ML.OnnxRuntime", "targets", "net6.0-macos", "targets.xml" + ) + net6_macos_target_targets = os.path.join( + args.sources_path, + "csharp", + "src", + "Microsoft.ML.OnnxRuntime", + "targets", + "net6.0-macos", + args.package_name + ".targets", + ) + + os.system(copy_command + " " + monoandroid_source_targets + " " + monoandroid_target_targets) os.system(copy_command + " " + xamarinios_source_targets + " " + xamarinios_target_targets) + os.system(copy_command + " " + net6_android_source_targets + " " + net6_android_target_targets) + os.system(copy_command + " " + net6_ios_source_targets + " " + net6_ios_target_targets) + os.system(copy_command + " " + net6_macos_source_targets + " " + net6_macos_target_targets) files_list.append("') files_list.append( "' ) + files_list.append("') files_list.append( "' ) + files_list.append( + "' + ) + files_list.append( + "' + ) + + files_list.append("') + files_list.append( + "' + ) + + files_list.append("') + files_list.append( + "' + ) + # Process License, ThirdPartyNotices, Privacy files_list.append("') files_list.append(