diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 000000000..5e618d5e6 --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "cake.tool": { + "version": "5.0.0", + "commands": [ + "dotnet-cake" + ], + "rollForward": false + }, + "dotnet-test-slicer": { + "version": "0.1.0-alpha7", + "commands": [ + "dotnet-test-slicer" + ], + "rollForward": false + }, + "api-tools": { + "version": "1.4.2-preview.2", + "commands": [ + "api-tools" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/01-use-package.yml b/.github/ISSUE_TEMPLATE/01-use-package.yml index 720b2eef6..c6d3106bc 100644 --- a/.github/ISSUE_TEMPLATE/01-use-package.yml +++ b/.github/ISSUE_TEMPLATE/01-use-package.yml @@ -15,6 +15,7 @@ body: options: - net8.0-android - net9.0-android + - net10.0-android (Preview) - Other validations: required: true @@ -23,7 +24,7 @@ body: attributes: label: Affected platform version description: Please provide the version number of the platform you see this issue on. - placeholder: E.g. VS 2022 17.9.0, .NET 8.0.100, etc. + placeholder: E.g. VS 2022 17.14.0, .NET 9.0.100, etc. validations: required: true - type: textarea diff --git a/.github/ISSUE_TEMPLATE/04-other.yml b/.github/ISSUE_TEMPLATE/04-other.yml index a33b599cb..a745c0542 100644 --- a/.github/ISSUE_TEMPLATE/04-other.yml +++ b/.github/ISSUE_TEMPLATE/04-other.yml @@ -14,6 +14,7 @@ body: options: - net8.0-android - net9.0-android + - net10.0-android (Preview) - Other validations: required: true @@ -22,7 +23,7 @@ body: attributes: label: Affected platform version description: Please provide the version number of the platform you see this issue on. - placeholder: E.g. VS 2022 17.9.0, .NET 8.0.100, etc. + placeholder: E.g. VS 2022 17.14.0, .NET 9.0.100, etc. validations: required: true - type: textarea diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 15d6de3ed..f96cdb902 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -136,7 +136,7 @@ For comprehensive guidance on troubleshooting binding issues, see: https://githu ## Target Frameworks ### Current Support -- **Primary**: `net8.0-android` (API 21+) +- **Primary**: `net9.0-android` (API 21+) - **Migration**: `net10.0-android` (API 35+) - migration capability exists but not currently enabled - **Legacy**: Xamarin.Android support ended May 1, 2024 @@ -150,12 +150,12 @@ For comprehensive guidance on troubleshooting binding issues, see: https://githu ### NuGet Package Structure ``` lib/ - net8.0-android34.0/ + net9.0-android35.0/ {assembly}.dll net10.0-android36.0/ {assembly}.dll build/ - net8.0-android34.0/ + net9.0-android35.0/ {package}.targets net10.0-android36.0/ {package}.targets diff --git a/BUILDING.md b/BUILDING.md index dd3842949..760c06d4e 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -4,7 +4,7 @@ Before building the libraries and samples in this repository, you will need to install: - * [.NET](https://dotnet.microsoft.com/download) ([.NET SDK 8.0.404](https://github.com/dotnet/core/blob/main/release-notes/8.0/8.0.11/8.0.11.md?WT.mc_id=dotnet-35129-website) is currently required) + * [.NET 9.0](https://dotnet.microsoft.com/download) (.NET SDK 9.0 is currently required) * [Cake .NET Tool](http://cakebuild.net): diff --git a/Directory.Build.props b/Directory.Build.props index 2afda6031..69cd15992 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,8 +6,17 @@ $(BUILD_SOURCEVERSION) - <_DefaultTargetFrameworks>net8.0-android - <_DefaultNetTargetFrameworks>net8.0 + <_DefaultNetTargetFramework>net9.0 + + <_DefaultPlatformVersionBase>35 + <_DefaultTargetFrameworkVersionBase>9.0 + <_DefaultTargetFrameworkBase>net$(_DefaultTargetFrameworkVersionBase)-android$(_DefaultPlatformVersionBase).0 + + <_DefaultPlatformVersionNext>36 + <_DefaultTargetFrameworkVersionNext>10.0 + <_DefaultTargetFrameworkNext>net$(_DefaultTargetFrameworkVersionNext)-android$(_DefaultPlatformVersionNext).0 + + <_DefaultTargetFrameworks>$(_DefaultTargetFrameworkBase);$(_DefaultTargetFrameworkNext) false @@ -85,13 +94,16 @@ - - + + + + - + + diff --git a/azure-pipelines-public.yml b/azure-pipelines-public.yml index e56208754..6afd3cf35 100644 --- a/azure-pipelines-public.yml +++ b/azure-pipelines-public.yml @@ -3,12 +3,6 @@ trigger: none pr: - main -parameters: -- name: RunDotnetNextTest - displayName: Run on .NET next preview? - type: boolean - default: false - variables: - template: build/ci/variables.yml @@ -23,7 +17,6 @@ stages: name: $(NetCorePublicPoolName) demands: - ImageOverride -equals $(WindowsPoolImageNetCorePublic) - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} use1ESTemplate: false installAndroidDependencies: true @@ -37,7 +30,6 @@ stages: buildPool: name: Azure Pipelines vmImage: macOS-15 - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} use1ESTemplate: false - template: build/ci/stage-standard-tests.yml@self @@ -46,5 +38,4 @@ stages: name: $(NetCorePublicPoolName) demands: - ImageOverride -equals $(WindowsPoolImageNetCorePublic) - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} installAndroidDependencies: true diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 95d4e4913..93b441e01 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -16,10 +16,6 @@ parameters: displayName: Run Extended Tests? type: boolean default: false -- name: RunDotnetNextTest - displayName: Run on .NET next preview? - type: boolean - default: false variables: # Variables used by both AndroidX/GPS go in the template @@ -61,7 +57,6 @@ extends: image: $(windowsImage) os: windows runAPIScan: true - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} - stage: build_mac displayName: Build - Mac @@ -77,7 +72,6 @@ extends: demands: - macOS.Name -equals Sonoma - macOS.Architecture -equals x64 - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} - template: build/ci/stage-standard-tests.yml@self parameters: @@ -85,7 +79,6 @@ extends: name: $(windowsAgentPoolName) image: $(windowsImage) os: windows - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} - template: build/ci/stage-extended-tests.yml@self parameters: @@ -94,6 +87,5 @@ extends: name: $(windowsAgentPoolName) image: $(windowsImage) os: windows - runDotnetNextTest: ${{ parameters.RunDotnetNextTest }} - template: build/ci/stage-sign-artifacts.yml@self diff --git a/build.cake b/build.cake index ba07553d7..c390805ec 100755 --- a/build.cake +++ b/build.cake @@ -7,28 +7,21 @@ #addin nuget:?package=SharpZipLib&version=1.4.2 // Imported scripts -#load "build/cake/nuget-install.cake" #load "build/cake/setup-environment.cake" #load "build/cake/update-config.cake" #load "build/cake/tests.cake" #load "build/cake/gps-parameters.cake" -#load "build/cake/dotnet-next.cake" #load "build/cake/binderate.cake" #load "build/cake/build-and-package.cake" #load "build/cake/validations.cake" #load "build/cake/executive-order.cake" #load "build/cake/clean.cake" #load "build/cake/performance-timings.cake" -#load "build/cake/build-android-libraries-net10-net8.cake" - -// Migrate packages to net10 -bool IsMigratingNet10 = false; using System.Xml.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Linq; - // The main configuration points var TARGET = Argument ("t", Argument ("target", "Default")); var CONFIGURATION = Argument ("c", Argument ("configuration", "Release")); @@ -48,13 +41,6 @@ Information ($"BUILD_COMMIT : {BUILD_COMMIT}"); Information ($"BUILD_NUMBER : {BUILD_NUMBER}"); Information ($"BUILD_TIMESTAMP : {BUILD_TIMESTAMP}"); -RunTarget("nuget-install"); - -if (IsMigratingNet10) -{ - RunTarget("build-android-libraries-net10-net8"); -} - Task ("packages") .IsDependentOn ("binderate") .IsDependentOn ("nuget"); diff --git a/build/cake/build-and-package.cake b/build/cake/build-and-package.cake index f8958c45e..0e372ab6a 100644 --- a/build/cake/build-and-package.cake +++ b/build/cake/build-and-package.cake @@ -18,32 +18,8 @@ Task ("nuget") "./generated/AndroidX.sln", new DotNetBuildSettings { MSBuildSettings = settings } ); - - RunTarget("nuget-uninstall"); - }); -Task ("nuget-pack-without-build") - .Does - ( - () => - { - var settings = new DotNetMSBuildSettings () - .SetConfiguration (CONFIGURATION) - .EnableBinaryLogger ($"./output/nuget-pack-without-build.{CONFIGURATION}.binlog") - .WithProperty ("NoBuild", "true") - .WithProperty ("PackageOutputPath", MakeAbsolute ((DirectoryPath)"./output/").FullPath) - .WithTarget ("Pack"); - - DotNetBuild - ( - "./generated/AndroidX.sln", - new DotNetBuildSettings { MSBuildSettings = settings } - ); - } - ); - - // Builds the .csproj projects Task ("libs") .IsDependentOn("metadata-verify") diff --git a/build/cake/build-android-libraries-net10-net8.cake b/build/cake/build-android-libraries-net10-net8.cake deleted file mode 100644 index b8e1e4c97..000000000 --- a/build/cake/build-android-libraries-net10-net8.cake +++ /dev/null @@ -1,936 +0,0 @@ -// Install ZString as a Cake Addin -#addin nuget:?package=ZString&version=2.6.0 - -// Install ZString as a Cake Tool -// #tool nuget:?package=ZString&version=2.6.0 - -/* -Quick test - -```shell -git clean -xdf ; dotnet cake -t=build-android-libraries-net10-net8 -``` - -Step by step tests: - -```shell - git clean -xdf - dotnet cake -t=net8-prepare-binderate-build - dotnet cake -t=revert-changes-net8 - dotnet cake -t=net10-net8-prepare-binderate-build - dotnet cake -t=copy-net8-with-net8-to-multi-target - dotnet cake -t=nuget-pack-without-build-net10-net8 - dotnet cake -t=revert-changes-net10-net8 -``` - - -```shell - git clean -xdf - dotnet cake -t=net8-prepare-binderate-build - dotnet cake -t=revert-changes-net8 - dotnet cake -t=net10-prepare-binderate-build - dotnet cake -t=revert-changes-net10 - dotnet cake -t=net10-net8-prepare-binderate-build - dotnet cake -t=copy-net8-with-net8-to-multi-target - dotnet cake -t=nuget-pack-without-build-net10-net8 - dotnet cake -t=revert-changes-net10-net8 -``` - -Tests from scratch: - -```bash -git clone \ - --branch mu-20241209-net10-removal-of-generator-workarounds \ - https://github.com/dotnet/android-libraries.git \ - al-bash/ -cd al-bash/ -dotnet cake -t:build-android-libraries-net10-net8 -``` - -```pwsh -git clone ` - --branch mu-20241209-net10-removal-of-generator-workarounds ` - https://github.com/dotnet/android-libraries.git ` - al-pwsh/ -cd al-pwsh/ -dotnet cake -t:build-android-libraries-net10-net8 -``` -*/ -using System.Threading.Tasks; - -// true - using installed .NET Android SDK (dotnet/android) -// false - using custom built .NET Android SDK (dotnet/android) -bool IsMigratingNet10UsingDotnetInstallation = true; - - -Task ("build-android-libraries-net10-net8") - .Does - ( - () => - { - // Parallel.Invoke - // ( - // () => - // { - // if (IsMigratingNet10UsingDotnetInstallation == false) - // { - // RunTarget("build-prepare-dotnet-android"); - // } - // }, - // () => RunTarget("net8-prepare-binderate-build") - // ); - - - if (IsMigratingNet10UsingDotnetInstallation == false) - { - RunTarget("build-prepare-dotnet-android"); - } - RunTarget("net8-prepare-binderate-build"); - RunTarget("revert-changes-net8"); - // RunTarget("net10-prepare-binderate-build"); // not needed - for testing purposes only - // RunTarget("revert-changes-net10"); - RunTarget("net10-net8-prepare-binderate-build"); - RunTarget("copy-net8-with-net8-to-multi-target"); - RunTarget("nuget-pack-without-build-net10-net8"); - RunTarget("revert-changes-net10-net8"); - } - ); - -string dotnet; -string path_global_json = "./global.json"; -string content_global_json; -DeleteDirectorySettings delete_directory_setting = new () - { - Recursive = true, - Force = true - }; - -Task ("nuget-pack-without-build-net10-net8") - .Does - ( - () => - { - RunTarget("nuget-install"); - - if (IsMigratingNet10UsingDotnetInstallation == false) - { - dotnet = "../dotnet-android/dotnet-local.sh"; - } - else - { - dotnet = "dotnet"; - } - - var projects = GetFiles($"./generated/**/*.csproj"); - - foreach(var project in projects) - { - Information($"project = {project}"); - } - - Information($"{new string('=', 120)}"); - string dotnet_pack = "pack" - + " " + - "__PLACEHOLDER_PROJECT__" - + " " + - "--no-build" - + " " + - "--output ./output/" - ; - /* - System has ran out of application memory. - - dotnet(94604) MallocStackLogging: can't turn off malloc stack logging because it was not enabled. - */ - Information($"{new string('=', 120)}"); - Information($" Environment.ProcessorCount = {Environment.ProcessorCount}"); - - Parallel.ForEach - ( - projects, - new ParallelOptions - { - MaxDegreeOfParallelism = (int) Math.Round(0.75 * Environment.ProcessorCount) - }, - (FilePath file) => - { - string dotnet_pack_project = dotnet_pack.Replace - ( - "__PLACEHOLDER_PROJECT__", - file.ToString() - ); - Information($"dotnet_pack = {dotnet_pack}"); - Information($"dotnet_pack_project = {dotnet_pack_project}"); - StartProcess(dotnet, dotnet_pack_project); - Information($"{file.ToString()}"); - } - ); - - RunTarget("nuget-uninstall"); - } - ); - - -Task ("copy-net8-with-net8-to-multi-target") - .Does - ( - () => - { - Information("Deleting"); - Information($" ./generated/"); - DeleteDirectories(GetDirectories("./generated/"), delete_directory_setting); - - string assembly_name_source; - string assembly_name_target; - - var assemblies = GetFiles($"generated-net8.0/**/bin/Release/net8.0-android/*.dll"); - - foreach(var assembly in assemblies) - { - assembly_name_source = System.IO.Path.GetFullPath(assembly.ToString()); - assembly_name_target = System.IO.Path - .GetDirectoryName(assembly_name_source) - .Replace - ( - "generated-net8.0", - "generated-net10.0-net8.0" - ); - DateTime dt_c_source = System.IO.File.GetCreationTime(assembly_name_source); - DateTime dt_a_source = System.IO.File.GetLastAccessTime(assembly_name_source); - DateTime dt_w_source = System.IO.File.GetLastWriteTime(assembly_name_source); - DateTime dt_c_target = System.IO.File.GetCreationTime(assembly_name_target); - DateTime dt_a_target = System.IO.File.GetLastAccessTime(assembly_name_target); - DateTime dt_w_target = System.IO.File.GetLastWriteTime(assembly_name_target); - - Information($"{new string('-', 120)}"); - Information($"source {assembly_name_source}"); - Information($" c: {dt_c_source.ToString("yyyyMMdd-HHmmss")}"); - Information($" w: {dt_w_source.ToString("yyyyMMdd-HHmmss")}"); - Information($" a: {dt_a_source.ToString("yyyyMMdd-HHmmss")}"); - Information($"target {assembly_name_target}"); - Information($" c: {dt_c_target.ToString("yyyyMMdd-HHmmss")}"); - Information($" w: {dt_w_target.ToString("yyyyMMdd-HHmmss")}"); - Information($" a: {dt_a_target.ToString("yyyyMMdd-HHmmss")}"); - - CopyFiles(assembly_name_source, assembly_name_target); - } - - string s = "generated-net10.0-net8.0"; - string t = "generated"; - - Information($"{new string('-', 120)}"); - Information($"Moving"); - Information($" source {s}"); - Information($" target {t}"); - MoveDirectory(s, t); - } - ); - - -Task ("net10-net8-prepare-binderate-build") - .Does - ( - () => - { - Information($"{new string('=', 120)}"); - Information("net10-net8-prepare-binderate-build"); - - DeleteDirectories(GetDirectories("./output/"), delete_directory_setting); - DeleteDirectories(GetDirectories("./externals/"), delete_directory_setting); - DeleteDirectories(GetDirectories("./generated/"), delete_directory_setting); - EnsureDirectoryExists("./output"); - EnsureDirectoryExists("./output/net10.0-net8.0-build-files/"); - - RunTarget("nuget-install"); - - /* - ../dotnet-android/dotnet-local.sh cake -t=net10-prepare-binderate-build - */ - - if (IsMigratingNet10UsingDotnetInstallation == false) - { - dotnet = "../dotnet-android/dotnet-local.sh"; - } - else - { - dotnet = "dotnet"; - } - - content_global_json = - """ - { - "sdk": - { - "version": "10.0.100-preview.3.25201.16", - "rollForward": "patch" - }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" - } - } - """; - System.IO.File.WriteAllText(path_global_json, content_global_json); - - RunTarget("binderate"); - Parallel.ForEach - ( - files_net10_net8.Keys, - new ParallelOptions - { - MaxDegreeOfParallelism = (int) Math.Round(0.75 * Environment.ProcessorCount) - }, - (string file) => - { - List<(string text_old, string text_new)> replacements = files_net10_net8[file]; - - string content = System.IO.File.ReadAllText(file); - - foreach((string text_old, string text_new) pair in replacements) - { - if (pair.text_old == null) - { - content = pair.text_new; - break; - } - else - { - content = content.Replace(pair.text_old, pair.text_new); - } - } - - System.IO.File.WriteAllText(file, content); - } - ); - - Information($"{new string('=', 120)}"); - if (IsRunningOnMacOs()) - { - // StartProcess - // ( - // dotnet, - // "build -t:InstallAndroidDependencies" - // + " " + - // "./generated/AndroidX.sln" - // + " " + - // "-f:net10.0-android" - // + " " + - // "-p:AndroidSdkDirectory=\"$HOME/Library/Android/sdk\"" - // + " " + - // "-p:AcceptAndroidSDKLicenses=True" - // ); - // StartProcess("sudo", $"{dotnet} workload restore ./generated/AndroidX.sln"); - } - if (IsRunningOnWindows()) - { - StartProcess - ( - dotnet, - "build -t:InstallAndroidDependencies" - + " " + - "./generated/AndroidX.sln" - + " " + - "-f:net10.0-android" - + " " + - "-p:AndroidSdkDirectory=\"C:\\Android\\android-sdk\\\"" - + " " + - "-p:AcceptAndroidSDKLicenses=True" - ); - StartProcess("dotnet", $"workload restore ./generated/AndroidX.sln"); - } - RunTarget("nuget"); - - CopyFiles("./global.json", "./output/net10.0-net8.0-build-files/"); - CopyFiles("./Directory.Build.props", "./output/net10.0-net8.0-build-files/"); - - RunTarget("nuget-uninstall"); - - //git restore pathTo/MyFile - - string s = "generated"; - string t = "generated-net10.0-net8.0"; - - Information($"{new string('-', 120)}"); - Information($"Moving"); - Information($" source {s}"); - Information($" target {t}"); - MoveDirectory(s, t); - //CopyDirectory(s, t); - } - ); - -Task ("net8-prepare-binderate-build") - .Does - ( - () => - { - Information($"{new string('=', 120)}"); - Information("net8-prepare-binderate-build"); - - DeleteDirectories(GetDirectories("./output/"), delete_directory_setting); - DeleteDirectories(GetDirectories("./externals/"), delete_directory_setting); - DeleteDirectories(GetDirectories("./generated/"), delete_directory_setting); - EnsureDirectoryExists("./output"); - EnsureDirectoryExists("./output/net8.0-build-files/"); - - RunTarget("nuget-install"); - - content_global_json = - """ - { - "sdk": - { - "version": "8.0.408", - "rollForward": "patch" - }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" - } - } - """; - System.IO.File.WriteAllText(path_global_json, content_global_json); - - if (IsMigratingNet10UsingDotnetInstallation == false) - { - dotnet = "../dotnet-android/dotnet-local.sh"; - } - else - { - dotnet = "dotnet"; - } - - RunTarget("binderate"); - if (IsRunningOnMacOs()) - { - // StartProcess - // ( - // dotnet, - // "build -t:InstallAndroidDependencies" - // + " " + - // "./generated/AndroidX.sln" - // + " " + - // "-f:net8.0-android" - // + " " + - // "-p:AndroidSdkDirectory=\"$HOME/Library/Android/sdk\"" - // + " " + - // "-p:AcceptAndroidSDKLicenses=True" - // ); - // StartProcess("sudo", $"{dotnet} workload restore ./generated/AndroidX.sln"); - } - if (IsRunningOnWindows()) - { - StartProcess - ( - dotnet, - "build -t:InstallAndroidDependencies" - + " " + - "./generated/AndroidX.sln" - + " " + - "-f:net8.0-android" - + " " + - "-p:AndroidSdkDirectory=\"C:\\Android\\android-sdk\\\"" - + " " + - "-p:AcceptAndroidSDKLicenses=True" - ); - StartProcess("dotnet", $"workload restore ./generated/AndroidX.sln"); - } - RunTarget("nuget"); - - CopyFiles("./global.json", "./output/net8.0-build-files/"); - CopyFiles("./Directory.Build.props", "./output/net8.0-build-files/"); - - RunTarget("nuget-uninstall"); - - string s = "generated"; - string t = "generated-net8.0"; - - Information($"{new string('-', 120)}"); - Information($"Moving"); - Information($" source {s}"); - Information($" target {t}"); - MoveDirectory(s, t); - //CopyDirectory(s, t); - } - ); - -Task ("net10-prepare-binderate-build") - .Does - ( - () => - { - DeleteDirectories(GetDirectories("./output/"), delete_directory_setting); - DeleteDirectories(GetDirectories("./externals/"), delete_directory_setting); - DeleteDirectories(GetDirectories("./generated/"), delete_directory_setting); - EnsureDirectoryExists("./output"); - EnsureDirectoryExists("./output/net10.0-build-files/"); - - RunTarget("nuget-install"); - - content_global_json = - """ - { - "sdk": - { - "version": "10.0.100-preview.3.25201.16", - "rollForward": "patch" - }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" - } - } - """; - System.IO.File.WriteAllText(path_global_json, content_global_json); - - Information("Change files"); - Parallel.ForEach - ( - files_net10.Keys, - new ParallelOptions - { - MaxDegreeOfParallelism = (int) Math.Round(0.75 * Environment.ProcessorCount) - }, - (string file) => - { - List<(string text_old, string text_new)> replacements = files_net10[file]; - - string content = System.IO.File.ReadAllText(file); - - foreach((string text_old, string text_new) pair in replacements) - { - if (pair.text_old == null) - { - content = pair.text_new; - break; - } - else - { - content = content.Replace(pair.text_old, pair.text_new); - } - } - - System.IO.File.WriteAllText(file, content); - } - ); - - if (IsMigratingNet10UsingDotnetInstallation == false) - { - dotnet = "../dotnet-android/dotnet-local.sh"; - } - else - { - dotnet = "dotnet"; - } - - RunTarget("binderate"); - if (IsRunningOnMacOs()) - { - // StartProcess - // ( - // dotnet, - // "build -t:InstallAndroidDependencies" - // + " " + - // "./generated/AndroidX.sln" - // + " " + - // "-f:net10.0-android" - // + " " + - // "-p:AndroidSdkDirectory=\"$HOME/Library/Android/sdk\"" - // + " " + - // "-p:AcceptAndroidSDKLicenses=True" - // ); - // StartProcess("sudo", $"{dotnet} workload restore ./generated/AndroidX.sln"); - } - if (IsRunningOnWindows()) - { - StartProcess - ( - dotnet, - "build -t:InstallAndroidDependencies" - + " " + - "./generated/AndroidX.sln" - + " " + - "-f:net10.0-android" - + " " + - "-p:AndroidSdkDirectory=\"C:\\Android\\android-sdk\\\"" - + " " + - "-p:AcceptAndroidSDKLicenses=True" - ); - StartProcess("dotnet", $"workload restore ./generated/AndroidX.sln"); - } - RunTarget("nuget"); - - CopyFiles("./global.json", "./output/net10.0-build-files/"); - CopyFiles("./Directory.Build.props", "./output/net10.0-build-files/"); - - RunTarget("nuget-uninstall"); - - string s = "generated"; - string t = "generated-net10.0"; - - Information($"{new string('-', 120)}"); - Information($"Moving"); - Information($" source {s}"); - Information($" target {t}"); - MoveDirectory(s, t); - //CopyDirectory(s, t); - } - ); - -Task ("build-prepare-dotnet-android") - .Does - ( - () => - { - if ( BuildSystem.IsRunningOnAzurePipelines || BuildSystem.IsRunningOnGitHubActions ) - { - Information("IsRunningOnAzurePipelines || IsRunningOnGitHubActions"); - RunTarget("prepare-dotnet-android"); - } - - Information("Local Build"); - content_global_json = - """ - { - "sdk": - { - "version": "8.0.408", - "rollForward": "patch" - }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" - } - } - """; - System.IO.File.WriteAllText(path_global_json, content_global_json); - - string dir = "../dotnet-android/"; - DeleteDirectories(GetDirectories(dir), delete_directory_setting); - - StartProcess("git", $"clone --recursive https://github.com/dotnet/android.git {dir}"); - - ProcessSettings ps = new ProcessSettings - { - WorkingDirectory = dir, - RedirectStandardOutput = true, - RedirectStandardError = true - }; - - Cysharp.Text.Utf16ValueStringBuilder sb = Cysharp.Text.ZString.CreateStringBuilder(); - - ps.RedirectedStandardOutputHandler = (output) => - { - sb.AppendLine(output); - return output; - }; - - Information("make prepare"); - ps.Arguments = new ProcessArgumentBuilder().Append("prepare"); - StartProcess("make",ps); - Information(sb.ToString()); - sb.Clear(); - - Information("make"); - ps.Arguments = new ProcessArgumentBuilder().Append(""); - StartProcess("make",ps); - - ps.Arguments = new ProcessArgumentBuilder().Append("--version"); - StartProcess($"{dir}/dotnet-local.sh", ps); - } - ); - -Task ("prepare-dotnet-android") - .Does - ( - () => - { - if (IsRunningOnMacOs()) - { - Information("IsRunningOnMacOs"); - // https://github.com/dotnet/android/blob/main/Documentation/building/unix/dependencies.md - - StartProcess("curl", $"-c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""); - - StartProcess("brew", $"install automake"); - StartProcess("brew", $"install autoconf"); - StartProcess("brew", $"install cmake"); - StartProcess("brew", $"install libtool"); - StartProcess("brew", $"install p7zip"); - StartProcess("brew", $"install gdk-pixbuf"); - StartProcess("brew", $"install gettext"); - StartProcess("brew", $"install coreutils"); - StartProcess("brew", $"install findutils"); - StartProcess("brew", $"install gnu-tar"); - StartProcess("brew", $"install gnu-sed"); - StartProcess("brew", $"install gawk"); - StartProcess("brew", $"install gnutls"); - StartProcess("brew", $"install gnu-indent"); - StartProcess("brew", $"install gnu-getopt"); - StartProcess("brew", $"install intltool"); - StartProcess("brew", $"install ninja"); - StartProcess("brew", $"install scons"); - StartProcess("brew", $"install wget"); - StartProcess("brew", $"install xz"); - - } - if (IsRunningOnWindows()) - { - Information("IsRunningOnWindows"); - // https://github.com/dotnet/android/blob/main/Documentation/building/windows/dependencies.md - // https://winget.run/search - - /* - StartProcess("winget", $"install -e --id JernejSimoncic.Wget"); - StartProcess("winget", $"install -e --id Ninja-build.Ninja"); - */ - } - - - } - ); - -Task ("revert-changes-net8") - .Does - ( - () => - { - // NO OP - } - ); - -Task ("revert-changes-net10") - .Does - ( - () => - { - foreach(string file in files_net10.Keys) - { - StartProcess("git", $"restore {file}"); - } - - StartProcess("git", $"restore global.json"); - } - ); - -Task ("revert-changes-net10-net8") - .Does - ( - () => - { - foreach(string file in files_net10_net8.Keys) - { - StartProcess("git", $"restore {file}"); - } - - StartProcess("git", $"restore global.json"); - } - ); - - -Dictionary> files_net10; -Dictionary> files_net10_net8; - - -files_net10 = new Dictionary> -{ - /* - { - "./global.json", - [ - ( - """ "version": "8.0.404",""", - """ "version": "10.0.100-preview.2.25102.3",""" - ), - ] - }, - { - "./workloads.json", - [ - ( - null, // replace all - """ - { - "microsoft.net.sdk.android": "35.99.0-preview.2.205/10.0.100-preview.2", - "microsoft.net.sdk.ios": "18.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.sdk.maccatalyst": "18.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.sdk.macos": "15.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.sdk.maui": "10.0.0-preview.2.25165.1/10.0.100-preview.2", - "microsoft.net.sdk.tvos": "18.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.current": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.emscripten.current": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net6": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net7": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net8": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net9": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net6": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net7": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net8": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net9": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.sdk.aspire": "8.2.2/8.0.100" - } - """ - ), - ] - }, - */ - { - "./Directory.Build.props", - [ - ( - """<_DefaultTargetFrameworks>net8.0""", - """<_DefaultTargetFrameworks>net10.0""" - ), - ( - """<_DefaultTargetFrameworks>net8.0-android""", - """<_DefaultTargetFrameworks>net10.0-android""" - ), - ( - """""", - """""" - ), - ( - """""", - """""" - ), - ( - """""", - """""" - ), - ] - }, - { - "./tests/Directory.Build.props", - [ - ( - """<_DefaultTargetFrameworks>net8.0-android""", - """<_DefaultTargetFrameworks>net10.0-android""" - ), - ( - """<_DefaultNetTargetFrameworks>net8.0""", - """<_DefaultNetTargetFrameworks>net10.0""" - ), - ] - }, - { - "./source/androidx.appcompat/typeforwarders/androidx.appcompat.appcompat-resources-typeforwarders.csproj", - [ - ( - """1.1.0.3""", - """1.1.0.3$(PackageVersionSuffix)""" - ), - ] - }, -}; - -files_net10_net8 = new Dictionary> -{ - /* - { - "./global.json", - [ - ( - """ "version": "8.0.404",""", - """ "version": "10.0.100-preview.2.25102.3",""" - ), - ] - }, - { - "./workloads.json", - [ - ( - null, // replace all - """ - { - "microsoft.net.sdk.android": "35.99.0-preview.2.205/10.0.100-preview.2", - "microsoft.net.sdk.ios": "18.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.sdk.maccatalyst": "18.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.sdk.macos": "15.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.sdk.maui": "10.0.0-preview.2.25165.1/10.0.100-preview.2", - "microsoft.net.sdk.tvos": "18.2.10552-net10-p2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.current": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.emscripten.current": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net6": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net7": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net8": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.emscripten.net9": "10.0.0-preview.2.25120.1/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net6": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net7": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net8": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.workload.mono.toolchain.net9": "10.0.0-preview.2.25163.2/10.0.100-preview.2", - "microsoft.net.sdk.aspire": "8.2.2/8.0.100" - } - """ - ), - ] - }, - */ - { - "./Directory.Build.props", - [ - ( - """<_DefaultTargetFrameworks>net8.0-android""", - """<_DefaultTargetFrameworks>net8.0-android;net10.0-android""" - ), - ( - """<_DefaultNetTargetFrameworks>net8.0""", - """<_DefaultNetTargetFrameworks>net8.0;net10.0""" - ), - ( - """""", - """ - - - """ - ), - ( - """""", - """ - - - """ - ), - ( - """""", - """ - - - """ - ), - ] - }, - { - "./tests/Directory.Build.props", - [ - ( - """<_DefaultTargetFrameworks>net8.0-android""", - """<_DefaultTargetFrameworks>net8.0-android;net10.0-android""" - ), - ( - """<_DefaultNetTargetFrameworks>net8.0""", - """<_DefaultNetTargetFrameworks>net8.0;net10.0""" - ), - ] - }, - { - "./source/androidx.appcompat/typeforwarders/androidx.appcompat.appcompat-resources-typeforwarders.csproj", - [ - ( - """1.1.0.3""", - """1.1.0.3$(PackageVersionSuffix)""" - ), - ] - }, -}; diff --git a/build/cake/dotnet-next.cake b/build/cake/dotnet-next.cake deleted file mode 100644 index b8bd084dc..000000000 --- a/build/cake/dotnet-next.cake +++ /dev/null @@ -1,34 +0,0 @@ -// Updates repository to be tested on preview versions of .NET - -Task ("dotnet-next") - .Does (() => -{ - var next_net_framework_version = Argument ("framework-version"); - var next_api_level_version = Argument ("api-level-version"); - var next_net_sdk_version = Argument ("dotnet-version"); - - Information (""); - Information ("Script Arguments:"); - Information (" dotnet Version: {0}", next_net_framework_version); - Information (" dotnet TF Version: {0}", next_net_sdk_version); - Information (" Android SDK API Level: {0}", next_api_level_version); - Information (""); - - // Update global.json - var global_json = File ("global.json"); - var json = JToken.Parse (FileReadText (global_json)); - json["sdk"]["version"] = next_net_sdk_version; - - FileWriteText (global_json, json.ToString ()); - - // Update Directory.Build.props - var directory_build = File ("Directory.Build.props"); - - XmlPoke (directory_build, "/Project/PropertyGroup/_DefaultNetTargetFrameworks", $"net{next_net_framework_version}.0"); - XmlPoke (directory_build, "/Project/PropertyGroup/_DefaultTargetFrameworks", $"net{next_net_framework_version}.0-android"); - - XmlPoke (directory_build, "/Project/ItemGroup/AndroidXNuGetTargetFolders[starts-with (@Include, 'build\\')]/@Include", $@"build\net{next_net_framework_version}.0-android{next_api_level_version}.0"); - XmlPoke (directory_build, "/Project/ItemGroup/AndroidXNuGetTargetFolders[starts-with (@Include, 'buildTransitive\\')]/@Include", $@"buildTransitive\net{next_net_framework_version}.0-android{next_api_level_version}.0"); - - XmlPoke (directory_build, "/Project/ItemGroup/AndroidXNuGetLibFolders/@Include", $@"lib\net{next_net_framework_version}.0-android{next_api_level_version}.0"); -}); diff --git a/build/cake/nuget-install.cake b/build/cake/nuget-install.cake deleted file mode 100644 index cbb38998f..000000000 --- a/build/cake/nuget-install.cake +++ /dev/null @@ -1,137 +0,0 @@ -/* -Nuget download -https://www.nuget.org/api/v2/package/{packageID}/ -https://api.nuget.org/v3/index.json?package=CliWrap&version=3.8.2 -https://api.nuget.org/v3-flatcontainer/cliwrap/3.8.2/cliwrap.3.8.2.nupkg - }, -https://www.nuget.org/api/v2/package/cake.coreclr/1.3.0/ -*/ -/* -#addin nuget:https://api.nuget.org/v3/index.json?package=Mono.Cecil&version=0.11.6 -#addin nuget:https://api.nuget.org/v3/index.json??package=HolisticWare.Xamarin.Tools.ComponentGovernance&version=0.0.1.4 -#addin nuget:https://api.nuget.org/v3/index.json??package=HolisticWare.Core.Net.HTTP&version=0.0.4 -#addin nuget:https://api.nuget.org/v3/index.json??package=HolisticWare.Core.IO&version=0.0.4 -*/ - -Dictionary nuget_packages = new () -{ - // { "cake.coreclr", "1.3.0" }, - { "Cake.FileHelpers", "7.0.0"}, // migrated, but needed for windows only??? - { "HolisticWare.Xamarin.Tools.ComponentGovernance", "0.0.1.4" }, - { "HolisticWare.Core.Net.HTTP", "0.0.4" }, - { "HolisticWare.Core.IO", "0.0.4" }, -}; - -Task("nuget-install") - .Does - ( - () => - { - EnsureDirectoryExists("./output"); - - /* - nuget.exe must be in the PATH - NuGetInstall - ( - "HolisticWare.Xamarin.Tools.ComponentGovernance", - new NuGetInstallSettings - { - Version = "0.0.1.4", - OutputDirectory = "./tools/Addins" - } - ); - NuGetInstall - ( - "HolisticWare.Core.Net.HTTP", - new NuGetInstallSettings - { - Version = "0.0.4", - OutputDirectory = "./tools/Addins" - } - ); - NuGetInstall - ( - "HolisticWare.Core.IO", - new NuGetInstallSettings - { - Version = "0.0.4", - OutputDirectory = "./tools/Addins" - } - ); - NuGetInstall - ( - "CliWrap", - new NuGetInstallSettings - { - Version = "3.8.2", - OutputDirectory = "./tools/Addins" - } - ); - */ - DownloadFile - ( - "https://api.nuget.org/v3-flatcontainer/cake.filehelpers/7.0.0/cake.filehelpers.7.0.0.nupkg", - $"./output/cake.filehelpers.7.0.0.nupkg" - ); - DownloadFile - ( - "https://api.nuget.org/v3-flatcontainer/cliwrap/3.8.2/cliwrap.3.8.2.nupkg", - $"./output/cliwrap.3.8.2.nupkg" - ); - DownloadFile - ( - "https://api.nuget.org/v3-flatcontainer/holisticware.core.net.http/0.0.4/holisticware.core.net.http.0.0.4.nupkg", - $"./output/holisticware.core.net.http.0.0.4.nupkg" - ); - DownloadFile - ( - "https://api.nuget.org/v3-flatcontainer/holisticware.core.io/0.0.4/holisticware.core.io.0.0.4.nupkg", - $"./output/holisticware.core.io.0.0.4.nupkg" - ); - DownloadFile - ( - "https://api.nuget.org/v3-flatcontainer/holisticware.xamarin.tools.componentgovernance/0.0.1.4/holisticware.xamarin.tools.componentgovernance.0.0.1.4.nupkg", - $"./output/holisticware.xamarin.tools.componentgovernance.0.0.1.4.nupkg" - ); - /* - */ - } - ); - -Task("nuget-uninstall") - .Does - ( - () => - { - string file; - // validation fails on CI if the package is in the output directory - - file = $"./output/cake.filehelpers.7.0.0.nupkg"; - if (FileExists (file)) - { - DeleteFile (file); - } - file = $"./output/cliwrap.3.8.2.nupkg"; - if (FileExists (file)) - { - DeleteFile (file); - } - file = $"./output/holisticware.core.net.http.0.0.4.nupkg"; - if (FileExists (file)) - { - DeleteFile (file); - } - - file = $"./output/holisticware.core.io.0.0.4.nupkg"; - if (FileExists (file)) - { - DeleteFile (file); - } - - file = $"./output/holisticware.xamarin.tools.componentgovernance.0.0.1.4.nupkg"; - if (FileExists (file)) - { - DeleteFile (file); - } - } - ); \ No newline at end of file diff --git a/build/ci/build-and-test.yml b/build/ci/build-and-test.yml index 46d684d57..cf6512479 100644 --- a/build/ci/build-and-test.yml +++ b/build/ci/build-and-test.yml @@ -7,59 +7,55 @@ parameters: - Square steps: - # - pwsh: | - # dotnet cake build.cake ` - # --target=ci-build ` - # --configuration="$(configuration)" ` - # --verbosity="$(verbosity)" - # displayName: 'Build packages' - # env: - # JavaSdkDirectory: $(JAVA_HOME) - # RepositoryCommit: $(Build.SourceVersion) - # RepositoryBranch: $(Build.SourceBranchName) - # RepositoryUrl: $(Build.Repository.Uri) - # RepositoryType: "git" + - pwsh: | + dotnet cake build.cake ` + --target=ci-build ` + --configuration="$(configuration)" ` + --verbosity="$(verbosity)" + displayName: 'Build packages' + env: + JavaSdkDirectory: $(JAVA_HOME) + RepositoryCommit: $(Build.SourceVersion) + RepositoryBranch: $(Build.SourceBranchName) + RepositoryUrl: $(Build.Repository.Uri) + RepositoryType: "git" - # - pwsh: | - # dotnet cake validation.cake ` - # --namespaces="${{ join(',', parameters.validPackagePrefixes) }}" ` - # --verbosity="$(verbosity)" - # displayName: 'Run NuGet package validation' + - pwsh: | + dotnet cake validation.cake ` + --namespaces="${{ join(',', parameters.validPackagePrefixes) }}" ` + --verbosity="$(verbosity)" + displayName: 'Run NuGet package validation' - # - pwsh: | - # dotnet cake nuget-diff.cake ` - # --artifacts="${{ parameters.artifactsPath }}" ` - # --output="${{ parameters.artifactsPath }}/api-diff" ` - # --cache="$(Agent.TempDirectory)/api-diff" ` - # --verbosity="$(verbosity)" - # displayName: 'Generate API diff' - - # - pwsh: dotnet cake utilities.cake -t=verify-namespace-file - # displayName: Verify published namespaces + - pwsh: | + dotnet cake nuget-diff.cake ` + --artifacts="${{ parameters.artifactsPath }}" ` + --output="${{ parameters.artifactsPath }}/api-diff" ` + --cache="$(Agent.TempDirectory)/api-diff" ` + --verbosity="$(verbosity)" + displayName: 'Generate API diff' + condition: eq(variables['Agent.OS'], 'Windows_NT') - # - pwsh: | - # dotnet cake build.cake ` - # --target=ci-samples ` - # --configuration="$(configuration)" ` - # --verbosity="$(verbosity)" - # displayName: 'Build samples' - # condition: ne(variables['skipSamplesTests'], 'true') - # env: - # JavaSdkDirectory: $(JAVA_HOME) - # RepositoryCommit: $(Build.SourceVersion) - # RepositoryBranch: $(Build.SourceBranchName) - # RepositoryUrl: $(Build.Repository.Uri) - # RepositoryType: "git" - - # - task: DotNetCoreCLI@2 - # displayName: Run unit tests - # condition: ne(variables['skipUnitTests'], 'true') - # inputs: - # command: test - # projects: util/**/*.Tests.csproj - # arguments: '-c $(configuration)' + - pwsh: dotnet cake utilities.cake -t=verify-namespace-file + displayName: Verify published namespaces - pwsh: | dotnet cake build.cake ` - --target=build-android-libraries-net10-net8 - displayName: 'Build build-android-libraries-net10-net8' + --target=ci-samples ` + --configuration="$(configuration)" ` + --verbosity="$(verbosity)" + displayName: 'Build samples' + condition: ne(variables['skipSamplesTests'], 'true') + env: + JavaSdkDirectory: $(JAVA_HOME) + RepositoryCommit: $(Build.SourceVersion) + RepositoryBranch: $(Build.SourceBranchName) + RepositoryUrl: $(Build.Repository.Uri) + RepositoryType: "git" + + - task: DotNetCoreCLI@2 + displayName: Run unit tests + condition: ne(variables['skipUnitTests'], 'true') + inputs: + command: test + projects: util/**/*.Tests.csproj + arguments: '-c $(configuration)' diff --git a/build/ci/build.yml b/build/ci/build.yml index 1604058e1..dcbdbd1d5 100644 --- a/build/ci/build.yml +++ b/build/ci/build.yml @@ -6,15 +6,10 @@ parameters: # Build Parameters timeoutInMinutes: 600 # Max job runtime in minutes runAPIScan: false # Run APIScan analysis - runDotnetNextTest: false use1ESTemplate: true installAndroidDependencies: false androidSdkRoot: $(Agent.TempDirectory)/android-sdk - tools: # Additional .NET global tools to install - - 'Cake.Tool': '5.0.0' - - 'private-api-tools': '1.0.3' - # Reporting/Analysis Parameters artifactsPath: 'output' # Path to the NuGet packages that need to be signed, verified and published signListPath: 'SignList.xml' # Path to 'SignList.xml' used for signing NuGet packages @@ -42,8 +37,6 @@ jobs: steps: - template: setup-environment.yml parameters: - dotnetTools: ${{ parameters.tools }} - runDotnetNextTest: ${{ parameters.runDotnetNextTest }} installAndroidDependencies: ${{ parameters.installAndroidDependencies }} androidSdkRoot: ${{ parameters.androidSdkRoot }} diff --git a/build/ci/job-extended-tests.yml b/build/ci/job-extended-tests.yml index e0dd2ed78..3741f170b 100644 --- a/build/ci/job-extended-tests.yml +++ b/build/ci/job-extended-tests.yml @@ -7,13 +7,8 @@ parameters: testFilter: # Test category filter testProject: # The test .csproj to build testAssembly: # The test .dll to execute - runDotnetNextTest: false installAndroidDependencies: false - tools: # Additional .NET global tools to install - - 'dotnet-test-slicer' : '0.1.0-alpha7' - - 'Cake.Tool': '5.0.0' - jobs: - job: ${{ parameters.jobName }}_package_tests displayName: ${{ parameters.jobName }} Package Tests @@ -25,8 +20,6 @@ jobs: steps: - template: setup-environment.yml parameters: - dotnetTools: ${{ parameters.tools }} - runDotnetNextTest: ${{ parameters.runDotnetNextTest }} installAndroidDependencies: ${{ parameters.installAndroidDependencies }} - task: DownloadPipelineArtifact@2 @@ -44,7 +37,7 @@ jobs: # Figure out which tests this slice is running - pwsh: >- - dotnet-test-slicer + dotnet dotnet-test-slicer slice --test-assembly="${{ parameters.testAssembly }}" --test-filter="${{ parameters.testFilter }}" diff --git a/build/ci/setup-environment.yml b/build/ci/setup-environment.yml index 4599eafe4..558486410 100644 --- a/build/ci/setup-environment.yml +++ b/build/ci/setup-environment.yml @@ -1,6 +1,4 @@ parameters: - dotnetTools: [] - runDotnetNextTest: false installAndroidDependencies: false androidSdkRoot: $(Agent.TempDirectory)/android-sdk javaSdkRoot: $(Agent.ToolsDirectory)\jdk11 @@ -22,75 +20,29 @@ steps: condition: ne('$(dotnetVersion)', '') - task: UseDotNet@2 - displayName: 'Use dotnet 10.0.100-preview.3.25201.16' + displayName: 'Use dotnet $(dotnetNextVersion)' inputs: - version: 10.0.100-preview.3.25201.16 + version: $(dotnetNextVersion) performMultiLevelLookup: true includePreviewVersions: true - condition: ne('$(dotnetVersion)', '') - - - ${{ if eq(parameters.runDotnetNextTest, true) }}: - - task: UseDotNet@2 - displayName: 'Use dotnet $(dotnetNextVersion)' - inputs: - version: $(dotnetNextVersion) - includePreviewVersions: true + condition: ne('$(dotnetNextVersion)', '') - script: dotnet --info displayName: Display dotnet info - - ${{ each tool in parameters.dotnetTools }}: - - ${{ each pair in tool }}: - - powershell: dotnet tool uninstall ${{ pair.key }} -g - displayName: 'Uninstall tool: ${{ pair.key }}' - ignoreLASTEXITCODE: true - - task: DotNetCoreCLI@2 - displayName: 'Install tool: ${{ pair.key }} ${{ pair.value }}' - inputs: - command: custom - custom: tool - arguments: >- - update -g ${{ pair.key }} -v:diag - --version ${{ pair.value }} - --add-source "https://api.nuget.org/v3/index.json" - - - ${{ if eq(parameters.runDotnetNextTest, true) }}: - - pwsh: | - dotnet cake -t=dotnet-next ` - --dotnet-version="$(dotnetNextVersion)" ` - --framework-version="$(dotnetNextFrameworkVersion)" ` - --api-level-version="$(dotnetNextApiLevel)" - displayName: Set up dotnet-next test changes - - - ${{ if eq(parameters.runDotnetNextTest, false) }}: - - pwsh: | - Copy-Item -Path .\global.net8.0.json -Destination .\global.json - dotnet workload update --verbosity diag --source https://api.nuget.org/v3/index.json - dotnet workload install maui-android android --verbosity diag --source https://api.nuget.org/v3/index.json - Copy-Item -Path .\global.net10.0.json -Destination .\global.json - dotnet workload update --verbosity diag --source https://api.nuget.org/v3/index.json - dotnet workload install maui-android android android-net8 --verbosity diag --source https://api.nuget.org/v3/index.json - if ($LASTEXITCODE -ne 0) { - Write-Host "##vso[task.logissue type=error]Failed to install workloads." - Write-Host "##vso[task.complete result=Failed;]" - exit 0 - } - displayName: Install .NET Workloads - - - ${{ if eq(parameters.runDotnetNextTest, true) }}: - - pwsh: | - Copy-Item -Path .\global.net8.0.json -Destination .\global.json - dotnet workload update --verbosity diag --source https://api.nuget.org/v3/index.json - dotnet workload install maui-android android --verbosity diag --source https://api.nuget.org/v3/index.json - Copy-Item -Path .\global.net10.0.json -Destination .\global.json - dotnet workload update --verbosity diag --source https://api.nuget.org/v3/index.json - dotnet workload install maui-android android android-net8 --verbosity diag --source https://api.nuget.org/v3/index.json - if ($LASTEXITCODE -ne 0) { - Write-Host "##vso[task.logissue type=error]Failed to install workloads." - Write-Host "##vso[task.complete result=Failed;]" - exit 0 - } - displayName: Install Preview .NET Workloads + - powershell: dotnet tool restore + displayName: 'Install .NET tools' + ignoreLASTEXITCODE: true + + - pwsh: | + dotnet workload update --verbosity diag --source https://api.nuget.org/v3/index.json + dotnet workload install maui-android android --verbosity diag --source https://api.nuget.org/v3/index.json + if ($LASTEXITCODE -ne 0) { + Write-Host "##vso[task.logissue type=error]Failed to install workloads." + Write-Host "##vso[task.complete result=Failed;]" + exit 0 + } + displayName: Install .NET Workloads - bash: | if [[ "$(Agent.Name)" == *"Azure Pipelines"* ]]; then diff --git a/build/ci/stage-extended-tests.yml b/build/ci/stage-extended-tests.yml index fbf21d318..32a35a69c 100644 --- a/build/ci/stage-extended-tests.yml +++ b/build/ci/stage-extended-tests.yml @@ -3,7 +3,6 @@ parameters: stageCondition: # When to run this stage buildPool: # VM pool information - runDotnetNextTest: false stages: - stage: extended_tests @@ -21,7 +20,6 @@ stages: testProject: $(extendedTestProject) testAssembly: $(extendedTestAssembly) buildPool: ${{ parameters.buildPool }} - runDotnetNextTest: ${{ parameters.runDotnetNextTest }} # Disabled because of too many failures until MAUI updates its AndroidX packages # - template: job-extended-tests.yml diff --git a/build/ci/stage-standard-tests.yml b/build/ci/stage-standard-tests.yml index dc33bbdab..bbfb2bf67 100644 --- a/build/ci/stage-standard-tests.yml +++ b/build/ci/stage-standard-tests.yml @@ -3,7 +3,6 @@ parameters: buildPool: # VM pool information stageCondition: and(succeeded(), ne('$(skipUnitTests)', 'true')) # When to run this stage - runDotnetNextTest: false installAndroidDependencies: false stages: @@ -22,5 +21,4 @@ stages: testProject: $(standardTestProject) testAssembly: $(standardTestAssembly) buildPool: ${{ parameters.buildPool }} - runDotnetNextTest: ${{ parameters.runDotnetNextTest }} installAndroidDependencies: ${{ parameters.installAndroidDependencies }} diff --git a/build/ci/variables.yml b/build/ci/variables.yml index 0945198d2..9ed02adf3 100644 --- a/build/ci/variables.yml +++ b/build/ci/variables.yml @@ -16,28 +16,28 @@ variables: windowsImage: 1ESPT-Windows2022 # Windows VM image name # macOS specific variables - macosAgentPoolName: VSEng-VSMac-Xamarin-Shared # macOS VM pool name + macosAgentPoolName: VSEng-VSMac-Xamarin-Shared # macOS VM pool name # Tool variables - dotnetVersion: '8.0.408' # .NET version to install on agent - dotnetWorkloadRollbackFile: 'workloads.json' # Rollback file specifying workload versions to install + dotnetVersion: '9.0.301' # .NET version to install on agent + dotnetFrameworkVersion: 9 # The number to use for TF (eg: netX.0-android) dotnetNuGetOrgSource: 'https://api.nuget.org/v3/index.json' # NuGet.org URL to find workloads dotnetWorkloadSource: 'https://aka.ms/dotnet6/nuget/index.json' # .NET engineering URL to find workloads # Standard test variables - standardTestProject: tests/allpackages/AllPackagesTests.csproj # Standard tests project file - standardTestAssembly: tests/allpackages/bin/$(configuration)/net8.0/AllPackagesTests.dll # Standard tests compiled binary + standardTestProject: tests/allpackages/AllPackagesTests.csproj # Standard tests project file + standardTestAssembly: tests/allpackages/bin/$(configuration)/net$(dotnetFrameworkVersion).0/AllPackagesTests.dll # Standard tests compiled binary skipUnitTests: false skipSamplesTests: true # Extended test variables - extendedTestProject: tests/extended/ExtendedTests.csproj # Extended tests project file - extendedTestAssembly: tests/extended/bin/$(configuration)/net8.0/ExtendedTests.dll # Extended tests compiled binary + extendedTestProject: tests/extended/ExtendedTests.csproj # Extended tests project file + extendedTestAssembly: tests/extended/bin/$(configuration)/net$(dotnetFrameworkVersion).0/ExtendedTests.dll # Extended tests compiled binary # dotnet-next test variables - dotnetNextVersion: 10.0.100-preview.3.25201.16 # .NET preview version to install - dotnetNextFrameworkVersion: 10 # The number to use for TF (eg: net9.0-android) - dotnetNextApiLevel: 35 # The Android SDK API Level to use (eg: -android35.0) + dotnetNextVersion: 10.0.100-preview.5.25277.114 # .NET preview version to install + dotnetNextFrameworkVersion: 10 # The number to use for TF (eg: netX.0-android) + dotnetNextApiLevel: 35 # The Android SDK API Level to use (eg: netX.0-androidXX.0) # dnceng-public variables NetCorePublicPoolName: NetCore-Public-XL diff --git a/build/scripts/provision-android/provision-android.csproj b/build/scripts/provision-android/provision-android.csproj index 6de45ea37..0555101c3 100644 --- a/build/scripts/provision-android/provision-android.csproj +++ b/build/scripts/provision-android/provision-android.csproj @@ -1,9 +1,10 @@ - net10.0-android + + $(_DefaultTargetFrameworkNext) - - + + diff --git a/docs/buildtoolsinventory.csv b/docs/buildtoolsinventory.csv index b769bbe6c..dac7dba16 100644 --- a/docs/buildtoolsinventory.csv +++ b/docs/buildtoolsinventory.csv @@ -1,13 +1,11 @@ BuildToolName,BuildToolVersion -dotnet sdk, 8.0.400 -dotnet sdk, patch -msbuild-sdks MSBuild.Sdk.Extras, 3.0.44 +dotnet sdk, 9.0.301 +dotnet sdk, latestMajor msbuild-sdks Microsoft.Build.Traversal, 4.1.0 msbuild-sdks Microsoft.Build.NoTargets, 3.7.56 -msbuild-sdks Xamarin.Legacy.Sdk, 0.2.0-alpha4 Mono JIT compiler, 6.12.0.188 (2020-02/ca8abcb6bc4 Thu Oct 13 14:26:22 EDT 2022) nuget, 6.3.1.1 -private-api-tools,1.0.3 +api-tools,1.4.1 xamarin.androidbinderator.tool,0.5.7 Gradle, 8.10.2 Kotlin, 1.9.24 diff --git a/docs/buildtoolsinventory.md b/docs/buildtoolsinventory.md index 1cd7a1273..00a34a1e6 100644 --- a/docs/buildtoolsinventory.md +++ b/docs/buildtoolsinventory.md @@ -4,20 +4,16 @@ ``` { - "sdk": - { - "version": "8.0.400", - "rollForward": "patch" + "sdk": { + "version": "9.0.301", + "rollForward": "latestMajor", + "allowPrerelease": true }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", + "msbuild-sdks": { "Microsoft.Build.Traversal": "4.1.0", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" + "Microsoft.Build.NoTargets": "3.7.56" } } - ``` -version8.0.400 -rollForwardpatch +version9.0.301 +rollForwardlatestMajor diff --git a/global.json b/global.json index 0d8cf64bd..682ebb0ce 100644 --- a/global.json +++ b/global.json @@ -1,14 +1,11 @@ { - "sdk": - { - "version": "8.0.408", - "rollForward": "patch" + "sdk": { + "version": "9.0.301", + "rollForward": "latestMajor", + "allowPrerelease": true }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" + "msbuild-sdks": { + "Microsoft.Build.Traversal": "4.1.0", + "Microsoft.Build.NoTargets": "3.7.56" } -} +} \ No newline at end of file diff --git a/global.net10.0.json b/global.net10.0.json deleted file mode 100644 index 9615bcf0e..000000000 --- a/global.net10.0.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "sdk": - { - "version": "10.0.100-preview.3.25201.16", - "rollForward": "patch" - }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" - } -} diff --git a/global.net8.0.json b/global.net8.0.json deleted file mode 100644 index 0d8cf64bd..000000000 --- a/global.net8.0.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "sdk": - { - "version": "8.0.408", - "rollForward": "patch" - }, - "msbuild-sdks": - { - "MSBuild.Sdk.Extras": "3.0.44", - "Microsoft.Build.Traversal": "4.1.82", - "Microsoft.Build.NoTargets": "3.7.56", - "Xamarin.Legacy.Sdk": "0.2.0-alpha4" - } -} diff --git a/nuget-diff.cake b/nuget-diff.cake index 874bbe59f..514a16b1f 100644 --- a/nuget-diff.cake +++ b/nuget-diff.cake @@ -33,13 +33,14 @@ if (!nupkgs.Any()) { if (FileExists(versionFile)) { version = "--version=" + System.IO.File.ReadAllText(versionFile).Trim(); } - var exitCode = StartProcess("api-tools", new ProcessSettings { + var exitCode = StartProcess("dotnet", new ProcessSettings { Arguments = new ProcessArgumentBuilder() + .Append("api-tools") .Append("nuget-diff") .AppendQuoted(nupkg.FullPath) .Append(version) .Append("--prerelease") - .Append("--prefer-released") + .Append("--prefer-release") .Append("--group-ids") .Append("--ignore-unchanged") .Append("--compare-nuget-structure") @@ -60,7 +61,7 @@ if (nu_diffs.Any()) { foreach (var file in nu_diffs) { using (var input = System.IO.File.OpenRead(file.FullPath)) { input.CopyTo(output); - Console.WriteLine(); + Information(""); } // Delete the individual file because it makes the assembly diffs hard to find diff --git a/published-namespaces.txt b/published-namespaces.txt index 4da35a7c2..908c7446c 100644 --- a/published-namespaces.txt +++ b/published-namespaces.txt @@ -2,7 +2,6 @@ _COROUTINE Android.Annotation Android.BillingClient Android.BillingClient.Api -Android.BillingClient.Ktx Android.Gms.Actions Android.Gms.Ads Android.Gms.Ads.AdManager @@ -798,16 +797,12 @@ Firebase.Analytics.KtxTesting Firebase.Annotations Firebase.Annotations.Concurrent Firebase.AppCheck -Firebase.AppCheck.Debug -Firebase.AppCheck.Debug.Internal Firebase.AppCheck.Internal Firebase.AppCheck.Internal.Util Firebase.AppCheck.Interop Firebase.AppCheck.Ktx Firebase.AppCheck.PlayIntegrity Firebase.AppCheck.PlayIntegrity.Internal -Firebase.AppCheck.SafetyNet -Firebase.AppCheck.SafetyNet.Internal Firebase.AppIndexing Firebase.AppIndexing.Builders Firebase.AppIndexing.Internal @@ -920,7 +915,6 @@ Firebase.Internal.Api Firebase.Ktx Firebase.Logger Firebase.Messaging -Firebase.Messaging.DirectBoot Firebase.Messaging.Ktx Firebase.Messaging.Reporting Firebase.Messaging.Threads diff --git a/source/AndroidX.Solution.proj b/source/AndroidX.Solution.proj index 32ffefe15..5adf0be72 100644 --- a/source/AndroidX.Solution.proj +++ b/source/AndroidX.Solution.proj @@ -1,4 +1,4 @@ - + diff --git a/source/_PackageLevelCustomizations.cshtml b/source/_PackageLevelCustomizations.cshtml index 2b6428c52..4f48b1bc7 100644 --- a/source/_PackageLevelCustomizations.cshtml +++ b/source/_PackageLevelCustomizations.cshtml @@ -55,12 +55,3 @@ } - -@* .NET 9 changes some binding internals that breaks some of our hand bound code. This property reverts - to the old behavior. Once we are .NET 9+ we should redo our hand bound code and remove this. *@ -@if (@Model.NuGetPackageId == "Xamarin.AndroidX.Media3.ExoPlayer" ) -{ - - <_AndroidEmitLegacyInterfaceInvokers>true - -} \ No newline at end of file diff --git a/source/androidx.appcompat/appcompat/Transforms/Metadata.xml b/source/androidx.appcompat/appcompat/Transforms/Metadata.xml index aefc19a38..7ee09d653 100644 --- a/source/androidx.appcompat/appcompat/Transforms/Metadata.xml +++ b/source/androidx.appcompat/appcompat/Transforms/Metadata.xml @@ -287,11 +287,11 @@ TODO: above metadata did not work - ./generated/androidx.appcompat.appcompat/obj/Debug/net8.0-android/generated/src/AndroidX.AppCompat.View.SupportActionModeWrapper.cs(609,31): error CS0115: 'SupportActionModeWrapper.SetTitle(ICharSequence?)': no suitable method found to override [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::TargetFramework=net8.0-android] - ./generated/androidx.appcompat.appcompat/obj/Debug/net8.0-android/generated/src/AndroidX.AppCompat.View.SupportActionModeWrapper.cs(21,23): error CS0534: 'SupportActionModeWrapper' does not implement inherited abstract member 'ActionMode.SubtitleFormatted.set' [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::TargetFramework=net8.0-android] - ./generated/androidx.appcompat.appcompat/obj/Debug/net8.0-android/generated/src/AndroidX.AppCompat.View.SupportActionModeWrapper.cs(21,23): error CS0534: 'SupportActionModeWrapper' does not implement inherited abstract member 'ActionMode.TitleFormatted.get' [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::TargetFramework=net8.0-android] - ./generated/androidx.appcompat.appcompat/obj/Debug/net8.0-android/generated/src/AndroidX.AppCompat.View.SupportActionModeWrapper.cs(21,23): error CS0534: 'SupportActionModeWrapper' does not implement inherited abstract member 'ActionMode.TitleFormatted.set' [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::TargetFramework=net8.0-android] - ./generated/androidx.appcompat.appcompat/obj/Debug/net8.0-android/generated/src/AndroidX.AppCompat.Widget.ActionBarContextView.cs(881,31): error CS0115: 'ActionBarContextView.SetVisibility(ViewStates)': no suitable method found to override [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::TargetFramework=net8.0-android] + AndroidX.AppCompat.View.SupportActionModeWrapper.cs(609,31): error CS0115: 'SupportActionModeWrapper.SetTitle(ICharSequence?)': no suitable method found to override [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::] + AndroidX.AppCompat.View.SupportActionModeWrapper.cs(21,23): error CS0534: 'SupportActionModeWrapper' does not implement inherited abstract member 'ActionMode.SubtitleFormatted.set' [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::] + AndroidX.AppCompat.View.SupportActionModeWrapper.cs(21,23): error CS0534: 'SupportActionModeWrapper' does not implement inherited abstract member 'ActionMode.TitleFormatted.get' [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::] + AndroidX.AppCompat.View.SupportActionModeWrapper.cs(21,23): error CS0534: 'SupportActionModeWrapper' does not implement inherited abstract member 'ActionMode.TitleFormatted.set' [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::] + AndroidX.AppCompat.Widget.ActionBarContextView.cs(881,31): error CS0115: 'ActionBarContextView.SetVisibility(ViewStates)': no suitable method found to override [./generated/androidx.appcompat.appcompat/androidx.appcompat.appcompat.csproj::] https://learn.microsoft.com/en-us/dotnet/api/android.views.actionmode.titleformatted?view=xamarin-android-sdk-13 diff --git a/source/androidx.media3/media3-common/Transforms/Metadata.xml b/source/androidx.media3/media3-common/Transforms/Metadata.xml index 15bbb16b1..9857823ec 100644 --- a/source/androidx.media3/media3-common/Transforms/Metadata.xml +++ b/source/androidx.media3/media3-common/Transforms/Metadata.xml @@ -86,8 +86,8 @@ diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props index d8a473f19..d65e92b58 100644 --- a/tests/Directory.Build.props +++ b/tests/Directory.Build.props @@ -3,7 +3,6 @@ which is tuned for building bindings packages. --> - <_DefaultTargetFrameworks>net8.0-android - <_DefaultNetTargetFrameworks>net8.0 + <_DefaultNetTargetFramework>net9.0 diff --git a/tests/allpackages/AllPackagesTests.csproj b/tests/allpackages/AllPackagesTests.csproj index ace91ec6f..230521d66 100644 --- a/tests/allpackages/AllPackagesTests.csproj +++ b/tests/allpackages/AllPackagesTests.csproj @@ -1,7 +1,7 @@ - $(_DefaultNetTargetFrameworks) + $(_DefaultNetTargetFramework) enable enable diff --git a/tests/allpackages/TestAllIndividualPackages.cs b/tests/allpackages/TestAllIndividualPackages.cs index c3622f0a0..6c0a13f34 100644 --- a/tests/allpackages/TestAllIndividualPackages.cs +++ b/tests/allpackages/TestAllIndividualPackages.cs @@ -13,7 +13,7 @@ public class TestAllIndividualPackages static string test_dir = Path.Combine ("output", "tests" , "allpackages"); static string configuration = "Release"; static string platform_version = "29"; - static string net_version = "net8.0"; + static string net_version = "net9.0"; // These packages are ignored because they contain the same Java code as // other packages, which causes a conflict when building the project. @@ -190,7 +190,7 @@ async Task TestAllPackages (string template, bool isGps) } xd.Save(proj_file); - ReplaceInFile (proj_file, ">21", $">{platform_version}"); + ReplaceInFile (proj_file, ">21", $">{platform_version}"); ReplaceInFile (proj_file, ">21.0", $">{platform_version}"); ReplaceInFile (proj_file, $";{net_version}-ios", ""); ReplaceInFile (proj_file, $";{net_version}-maccatalyst", ""); diff --git a/tests/extended/ExtendedTests.csproj b/tests/extended/ExtendedTests.csproj index ace91ec6f..230521d66 100644 --- a/tests/extended/ExtendedTests.csproj +++ b/tests/extended/ExtendedTests.csproj @@ -1,7 +1,7 @@ - $(_DefaultNetTargetFrameworks) + $(_DefaultNetTargetFramework) enable enable diff --git a/tests/extended/TestAllIndividualPackages.cs b/tests/extended/TestAllIndividualPackages.cs index c42d29d44..daa8e6d40 100644 --- a/tests/extended/TestAllIndividualPackages.cs +++ b/tests/extended/TestAllIndividualPackages.cs @@ -13,7 +13,7 @@ public class TestAllIndividualPackages static string test_dir = Path.Combine ("output", "tests"); static string configuration = "Release"; static string platform_version = "29"; - static string net_version = "net8.0"; + static string net_version = "net9.0"; static TestAllIndividualPackages () { diff --git a/util/Directory.Build.props b/util/Directory.Build.props index 1e10d5b4e..55eb537f9 100644 --- a/util/Directory.Build.props +++ b/util/Directory.Build.props @@ -1,4 +1,7 @@ + + <_DefaultNetTargetFramework>net9.0 + diff --git a/util/Xamarin.AndroidBinderator/Samples/Templates/AndroidSupportProject.cshtml b/util/Xamarin.AndroidBinderator/Samples/Templates/AndroidSupportProject.cshtml deleted file mode 100644 index ce7478e20..000000000 --- a/util/Xamarin.AndroidBinderator/Samples/Templates/AndroidSupportProject.cshtml +++ /dev/null @@ -1,117 +0,0 @@ -@using System.Linq - - - - MonoAndroid81 - true - - @(Model.NuGetPackageId) - Resources - Assets - False - True - Resources\Resource.designer.cs - - - - @(Model.NuGetPackageId) - Xamarin Android Support Library - @(Model.Name) - Xamarin.Android bindings for Android Support Library - @(Model.Name) - Xamarin.Android bindings for Android Support Library - @(Model.Name) - Xamarin Android Xamarin.Android Support - Xamarin Inc. - Xamarin Inc. - © Microsoft Corporation. All rights reserved. - https://go.microsoft.com/fwlink/?linkid=865352 - https://go.microsoft.com/fwlink/?linkid=865381 - https://raw.githubusercontent.com/xamarin/AndroidSupportComponents/master/icons/@(Model.Name)_128x128.png - @(Model.NuGetVersion) - true - - - - class-parse - - - - - - - - - @foreach (var art in @Model.MavenArtifacts) { - - } - - - @* - @foreach (var art in @Model.MavenArtifacts) { - - } - *@ - - - - @foreach (var art in @Model.MavenArtifacts) { - <_AndroidDocumentationPath Include="..\..\..\externals\@(art.MavenGroupId)\@(art.MavenArtifactId)-paramnames.txt" Condition="Exists('..\..\..\externals\@(art.MavenGroupId)\@(art.MavenArtifactId)-paramnames.txt')" /> - } - - - - - - - - - - - - @if (@Model.MavenArtifacts.Count > 0) { - - @foreach (var art in @Model.MavenArtifacts) { - if (art.ProguardFile != null) { - - } - } - - } - - - - @foreach (var art in @Model.MavenArtifacts) { - if (art.MavenArtifactPackaging == "aar") { - - } - } - - - - @if (@Model.MavenArtifacts.Count > 0) { - - @foreach (var art in @Model.MavenArtifacts) { - if (art.MavenArtifactPackaging == "aar") { - - } else { - - } - } - - } - - - @foreach (var dep in @Model.NuGetDependencies) { - if (dep.IsProjectReference) { - - } - } - - - - @foreach (var dep in @Model.NuGetDependencies) { - if (!dep.IsProjectReference) { - - } - } - - - diff --git a/util/Xamarin.AndroidBinderator/Samples/Templates/AndroidSupportTargets.cshtml b/util/Xamarin.AndroidBinderator/Samples/Templates/AndroidSupportTargets.cshtml deleted file mode 100644 index b37bfbaec..000000000 --- a/util/Xamarin.AndroidBinderator/Samples/Templates/AndroidSupportTargets.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@using System.Linq - - - @if (@Model.MavenArtifacts.Count > 0) { - - @foreach (var art in @Model.MavenArtifacts) { - if (art.ProguardFile != null) { - - } - } - - } - - - @foreach (var art in @Model.MavenArtifacts) { - if (art.MavenArtifactPackaging == "aar") { - - } - } - - - @if (@Model.Name == "support-vector-drawable") { - - - - $(AndroidResgenExtraArgs.TrimEnd(' ')) --no-version-vectors - - - --no-version-vectors - - - } - \ No newline at end of file diff --git a/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tests/Xamarin.AndroidBinderator.Tests.csproj b/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tests/Xamarin.AndroidBinderator.Tests.csproj index 11bb32074..a4f363f2f 100644 --- a/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tests/Xamarin.AndroidBinderator.Tests.csproj +++ b/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tests/Xamarin.AndroidBinderator.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + $(_DefaultNetTargetFramework) false true disable diff --git a/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tool/Xamarin.AndroidBinderator.Tool.csproj b/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tool/Xamarin.AndroidBinderator.Tool.csproj index 447d51728..9e856be71 100644 --- a/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tool/Xamarin.AndroidBinderator.Tool.csproj +++ b/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.Tool/Xamarin.AndroidBinderator.Tool.csproj @@ -3,7 +3,7 @@ true Exe - net8.0 + $(_DefaultNetTargetFramework) xamarin-android-binderator Xamarin.AndroidBinderator.Tool true diff --git a/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.csproj b/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.csproj index 5b5403949..94841735f 100644 --- a/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.csproj +++ b/util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator.csproj @@ -1,7 +1,7 @@ - net8.0 + $(_DefaultNetTargetFramework) 12.0 true AndroidBinderator diff --git a/util/Xamarin.Build.Download/source/Xamarin.Build.Download.Tests/Xamarin.Build.Download.Tests.csproj b/util/Xamarin.Build.Download/source/Xamarin.Build.Download.Tests/Xamarin.Build.Download.Tests.csproj index 15c1aa2ef..f571af3c5 100644 --- a/util/Xamarin.Build.Download/source/Xamarin.Build.Download.Tests/Xamarin.Build.Download.Tests.csproj +++ b/util/Xamarin.Build.Download/source/Xamarin.Build.Download.Tests/Xamarin.Build.Download.Tests.csproj @@ -1,7 +1,7 @@  - net8.0 + $(_DefaultNetTargetFramework) true Major diff --git a/utilities.cake b/utilities.cake index 46298f234..b9f791b0b 100644 --- a/utilities.cake +++ b/utilities.cake @@ -287,7 +287,7 @@ Task ("generate-component-governance") manifest.MappingMavenArtifact2NuGetPackage = mappings_artifact_nuget; - Console.WriteLine($"Saving ComponetGovernanceManifest cgmanifest.json..."); + Information($"Saving ComponetGovernanceManifest cgmanifest.json..."); manifest.Save("./cgmanifest.json"); System.IO.File.WriteAllText @@ -453,7 +453,7 @@ Task ("spell-check") var dictionary = WeCantSpell.Hunspell.WordList.CreateFromFiles(@"externals/English (American).dic"); string[] words = - [ + { "Xamarin", "AndroidX", "IdentifierCommon", @@ -828,7 +828,7 @@ Task ("spell-check") "Json", "ViewTree", "TypeAnnotations", - ]; + }; var dictionary_custom = WeCantSpell.Hunspell.WordList.CreateFromWords(words); @@ -1743,24 +1743,24 @@ Task("verify-namespace-file") if (new_ns.Any ()) { unhandled_changes = true; - Console.WriteLine ("New Namespaces"); - Console.WriteLine ("--------------"); + Information ("New Namespaces"); + Information ("--------------"); foreach (var ns in new_ns) - Console.WriteLine (ns); + Information (ns); - Console.WriteLine (); + Information (""); } var removed_ns = old_list.Except (new_list); if (removed_ns.Any ()) { unhandled_changes = true; - Console.WriteLine ("Removed Namespaces"); - Console.WriteLine ("------------------"); + Information ("Removed Namespaces"); + Information ("------------------"); foreach (var ns in removed_ns) - Console.WriteLine (ns); + Information (ns); } if (unhandled_changes) @@ -1920,10 +1920,10 @@ Task("tools-executive-oreder-csv-and-markdown") no version info let's parse - dotnet tool list --global + dotnet tool list */ process = "dotnet"; - process_args = "tool list --global"; + process_args = "tool list"; process_settings = new ProcessSettings () { Arguments = process_args, @@ -2053,7 +2053,7 @@ Task("tools-executive-oreder-csv-and-markdown") return; } catch (Exception ex) { // Don't fail the build if this fails. - Console.WriteLine (ex); + Information (ex); } } );