diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 59e8743f7c7d..a1c2a8ee1900 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -77,6 +77,13 @@ jobs: parameters: poolName: '$(windowsScaledPool)' +- template: build/ci/.azure-devops-package-wasm.yml + parameters: + vmImage: '$(linuxVMImage)' + +- template: build/ci/.azure-devops-package-skia.yml + parameters: + poolName: '$(windowsScaledPool)' - template: build/ci/.azure-devops-package.yml parameters: poolName: '$(windowsScaledPool)' diff --git a/build/Uno.UI.Build.csproj b/build/Uno.UI.Build.csproj index 3d40bceb513c..a31c2170f53f 100644 --- a/build/Uno.UI.Build.csproj +++ b/build/Uno.UI.Build.csproj @@ -43,29 +43,21 @@ - - + + + + - - - - - - - - - - - + @@ -221,14 +213,13 @@ - - + + + + + + + + + + + + + diff --git a/build/Uno.WinUI.nuspec b/build/Uno.WinUI.nuspec index 40904e44130e..1dce17629eb4 100644 --- a/build/Uno.WinUI.nuspec +++ b/build/Uno.WinUI.nuspec @@ -92,7 +92,18 @@ - + + + + + + + + + + + + @@ -133,6 +144,21 @@ + + + + + + + + + + + + + + + @@ -482,56 +508,108 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -573,6 +651,7 @@ + @@ -583,6 +662,7 @@ + @@ -593,6 +673,7 @@ + @@ -603,6 +684,7 @@ + @@ -613,6 +695,7 @@ + @@ -623,6 +706,7 @@ + diff --git a/build/ci/.azure-devops-package-skia.yml b/build/ci/.azure-devops-package-skia.yml new file mode 100644 index 000000000000..1794896360cb --- /dev/null +++ b/build/ci/.azure-devops-package-skia.yml @@ -0,0 +1,66 @@ +parameters: + poolName: '' + +jobs: +- job: wasm_package_build + displayName: 'Build WebAssembly Package Binaries' + container: nv-bionic-wasm + + dependsOn: winui_convert_tree + + pool: ${{ parameters.poolName }} + + strategy: + matrix: + UWP: + UNO_UWP_BUILD: true + XAML_FLAVOR_BUILD: UWP + + WinUI: + UNO_UWP_BUILD: false + XAML_FLAVOR_BUILD: WinUI + + variables: + CombinedConfiguration: Release|Any CPU + CI_Build: true + + # Disable .NET 5 build on CI for package generation + # Build validation is performed on other jobs + UnoUIDisableNetCoreBuild: true + + NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget + + steps: + - checkout: self + clean: true + + - template: templates/download-winui-converted-tree.yml + + - template: templates/nuget-cache.yml + parameters: + nugetPackages: $(NUGET_PACKAGES) + + - template: templates/gitversion.yml + + - template: templates/dotnet-install.yml + + - powershell: | + Set-PSDebug -Trace 1 + dotnet build build/Uno.UI.Build.csproj /m /t:BuildCIWasm "/p:CombinedConfiguration=$(CombinedConfiguration)" /detailedsummary /bl:$(build.artifactstagingdirectory)/build-skia-$(XAML_FLAVOR_BUILD).binlog + displayName: Building Skia Binaries + + - template: templates/copy-package-assets.yml + + - task: ArchiveFiles@2 + inputs: + rootFolderOrFile: $(build.sourcesdirectory)\build-artifacts\bin-$(XAML_FLAVOR_BUILD) + includeRootFolder: false + archiveType: 'zip' + archiveFile: '$(Build.ArtifactStagingDirectory)/skia-bin-$(XAML_FLAVOR_BUILD).zip' + + - task: PublishBuildArtifacts@1 + condition: always() + inputs: + PathtoPublish: $(build.artifactstagingdirectory) + ArtifactName: NugetPackages-Artifacts + ArtifactType: Container diff --git a/build/ci/.azure-devops-package-wasm.yml b/build/ci/.azure-devops-package-wasm.yml new file mode 100644 index 000000000000..cdd0eeb3f45e --- /dev/null +++ b/build/ci/.azure-devops-package-wasm.yml @@ -0,0 +1,67 @@ +parameters: + poolName: '' + +jobs: +- job: wasm_package_build + displayName: 'Build WebAssembly Package Binaries' + container: nv-bionic-wasm + + dependsOn: winui_convert_tree + + pool: + vmImage: ${{ parameters.vmImage }} + + strategy: + matrix: + UWP: + UNO_UWP_BUILD: true + XAML_FLAVOR_BUILD: UWP + + WinUI: + UNO_UWP_BUILD: false + XAML_FLAVOR_BUILD: WinUI + + variables: + CombinedConfiguration: Release|Any CPU + CI_Build: true + + # Disable .NET 5 build on CI for package generation + # Build validation is performed on other jobs + UnoUIDisableNetCoreBuild: true + + NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget + + steps: + - checkout: self + clean: true + + - template: templates/download-winui-converted-tree.yml + + - template: templates/nuget-cache.yml + parameters: + nugetPackages: $(NUGET_PACKAGES) + + - template: templates/gitversion.yml + + - template: templates/dotnet-install.yml + + - powershell: | + Set-PSDebug -Trace 1 + dotnet build build/Uno.UI.Build.csproj /m /t:BuildCIWasm "/p:CombinedConfiguration=$(CombinedConfiguration)" /detailedsummary /bl:$(build.artifactstagingdirectory)/build-wasm-$(XAML_FLAVOR_BUILD).binlog + displayName: Building Wasm Binaries + + - template: templates/copy-package-assets.yml + + - task: ArchiveFiles@2 + inputs: + rootFolderOrFile: $(build.sourcesdirectory)\build-artifacts\bin-$(XAML_FLAVOR_BUILD) + includeRootFolder: false + archiveType: 'zip' + archiveFile: '$(Build.ArtifactStagingDirectory)/wasm-bin-$(XAML_FLAVOR_BUILD).zip' + + - task: PublishBuildArtifacts@1 + condition: always() + inputs: + PathtoPublish: $(build.artifactstagingdirectory) + ArtifactName: NugetPackages-Artifacts + ArtifactType: Container diff --git a/build/ci/templates/dotnet-install.yml b/build/ci/templates/dotnet-install.yml index ab8d06037a38..ace7e37b9895 100644 --- a/build/ci/templates/dotnet-install.yml +++ b/build/ci/templates/dotnet-install.yml @@ -1,22 +1,9 @@ steps: - task: UseDotNet@2 - displayName: 'Use .NET Core SDK 6.0.300' + displayName: 'Use .NET Core SDK 7.0.100-rc.1.22431.12' retryCountOnTaskFailure: 3 inputs: packageType: sdk - version: 6.0.300 - - - task: UseDotNet@2 - displayName: 'Use .NET Core SDK 5.0.400' - retryCountOnTaskFailure: 3 - inputs: - packageType: sdk - version: 5.0.400 - - - task: UseDotNet@2 - displayName: 'Use .NET Core SDK 3.1.406' - retryCountOnTaskFailure: 3 - inputs: - packageType: sdk - version: 3.1.406 + includePreviewVersions: true + version: 7.0.100-rc.1.22431.12 diff --git a/src/Uno.UI-packages-no-net6.slnf b/build/filters/Uno.UI-packages-no-net6.slnf similarity index 66% rename from src/Uno.UI-packages-no-net6.slnf rename to build/filters/Uno.UI-packages-no-net6.slnf index 3fdb11f935f7..13736c52b9ee 100644 --- a/src/Uno.UI-packages-no-net6.slnf +++ b/build/filters/Uno.UI-packages-no-net6.slnf @@ -1,13 +1,9 @@ { "solution": { - "path": "Uno.UI.sln", + "path": "..\\..\\src\\Uno.UI.sln", "projects": [ "..\\build\\Uno.UI.Build.csproj", - "AddIns\\Uno.UI.Lottie\\Uno.UI.Lottie.Skia.csproj", - "AddIns\\Uno.UI.Lottie\\Uno.UI.Lottie.Wasm.csproj", "AddIns\\Uno.UI.Lottie\\Uno.UI.Lottie.csproj", - "AddIns\\Uno.UI.MSAL\\Uno.UI.MSAL.Skia.csproj", - "AddIns\\Uno.UI.MSAL\\Uno.UI.MSAL.Wasm.csproj", "AddIns\\Uno.UI.MSAL\\Uno.UI.MSAL.csproj", "ResourceConverter\\ResourceConverter.csproj", "SolutionTemplate\\Uno.ProjectTemplates.Dotnet\\Uno.ProjectTemplates.Dotnet.csproj", @@ -34,65 +30,35 @@ "Uno.Analyzers\\Uno.Analyzers.csproj", "Uno.Foundation.Logging\\Uno.Foundation.Logging.csproj", "Uno.Foundation.Runtime.WebAssembly\\Uno.Foundation.Runtime.WebAssembly.csproj", - "Uno.Foundation\\Uno.Foundation.Skia.csproj", - "Uno.Foundation\\Uno.Foundation.Wasm.csproj", "Uno.Foundation\\Uno.Foundation.csproj", "Uno.NUnitTransformTool\\Uno.NUnitTransformTool.csproj", "Uno.ReferenceImplComparer\\Uno.ReferenceImplComparer.csproj", "Uno.UI.Adapter.Microsoft.Extensions.Logging\\Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj", "Uno.UI.AssemblyComparer\\Uno.UI.AssemblyComparer.csproj", "Uno.UI.BindingHelper.Android\\Uno.UI.BindingHelper.Android.csproj", - "Uno.UI.Composition\\Uno.UI.Composition.Skia.csproj", - "Uno.UI.Composition\\Uno.UI.Composition.Wasm.csproj", "Uno.UI.Composition\\Uno.UI.Composition.csproj", - "Uno.UI.Dispatching\\Uno.UI.Dispatching.Skia.csproj", - "Uno.UI.Dispatching\\Uno.UI.Dispatching.Wasm.csproj", "Uno.UI.Dispatching\\Uno.UI.Dispatching.csproj", - "Uno.UI.FluentTheme.v1\\Uno.UI.FluentTheme.v1.Skia.csproj", - "Uno.UI.FluentTheme.v1\\Uno.UI.FluentTheme.v1.Wasm.csproj", "Uno.UI.FluentTheme.v1\\Uno.UI.FluentTheme.v1.csproj", - "Uno.UI.FluentTheme.v2\\Uno.UI.FluentTheme.v2.Skia.csproj", - "Uno.UI.FluentTheme.v2\\Uno.UI.FluentTheme.v2.Wasm.csproj", "Uno.UI.FluentTheme.v2\\Uno.UI.FluentTheme.v2.csproj", "Uno.UI.Foldable\\Uno.UI.Foldable.csproj", - "Uno.UI.FluentTheme\\Uno.UI.FluentTheme.Skia.csproj", - "Uno.UI.FluentTheme\\Uno.UI.FluentTheme.Wasm.csproj", "Uno.UI.FluentTheme\\Uno.UI.FluentTheme.csproj", - "Uno.UI.XamlHost.Skia.Wpf\\Uno.UI.XamlHost.Skia.Wpf.csproj", "Uno.UI.XamlHost\\Uno.UI.XamlHost.csproj", - "Uno.UI.XamlHost\\Uno.UI.XamlHost.Skia.csproj", - "Uno.UI.XamlHost\\Uno.UI.XamlHost.Wasm.csproj", "Uno.UI.Maps\\Uno.UI.Maps.csproj", "Uno.UI.RemoteControl.Host\\Uno.UI.RemoteControl.Host.csproj", "Uno.UI.RemoteControl.VS\\Uno.UI.RemoteControl.VS.csproj", - "Uno.UI.RemoteControl\\Uno.UI.RemoteControl.Skia.csproj", - "Uno.UI.RemoteControl\\Uno.UI.RemoteControl.Wasm.csproj", "Uno.UI.RemoteControl\\Uno.UI.RemoteControl.csproj", - "Uno.UI.Runtime.Skia.Gtk\\Uno.UI.Runtime.Skia.Gtk.csproj", - "Uno.UI.Runtime.Skia.Linux.FrameBuffer\\Uno.UI.Runtime.Skia.Linux.FrameBuffer.csproj", - "Uno.UI.Runtime.Skia.Tizen\\Uno.UI.Runtime.Skia.Tizen.csproj", - "Uno.UI.Runtime.Skia.Wpf\\Uno.UI.Runtime.Skia.Wpf.csproj", "Uno.UI.Runtime.WebAssembly.Compatibility\\Uno.UI.Runtime.WebAssembly.Compatibility.csproj", "Uno.UI.Runtime.WebAssembly\\Uno.UI.Runtime.WebAssembly.csproj", - "Uno.UI.RuntimeTests\\Uno.UI.RuntimeTests.Skia.csproj", - "Uno.UI.RuntimeTests\\Uno.UI.RuntimeTests.Wasm.csproj", "Uno.UI.RuntimeTests\\Uno.UI.RuntimeTests.csproj", "Uno.UI.TestComparer\\Uno.UI.TestComparer.csproj", "Uno.UI.Tests.Performance\\Uno.UI.Tests.Performance.csproj", "Uno.UI.Tests.ViewLibraryProps\\Uno.UI.Tests.ViewLibraryProps.csproj", "Uno.UI.Tests.ViewLibrary\\Uno.UI.Tests.ViewLibrary.csproj", "Uno.UI.Tests\\Uno.UI.Tests.csproj", - "Uno.UI.Toolkit\\Uno.UI.Toolkit.Skia.csproj", - "Uno.UI.Toolkit\\Uno.UI.Toolkit.Wasm.csproj", "Uno.UI.Toolkit\\Uno.UI.Toolkit.csproj", - "Uno.UI.Wasm.Tests\\Uno.UI.Wasm.Tests.csproj", - "Uno.UI\\Uno.UI.Skia.csproj", - "Uno.UI\\Uno.UI.Wasm.csproj", "Uno.UI\\Uno.UI.csproj", "Uno.UWPSyncGenerator.Reference\\Uno.UWPSyncGenerator.Reference.csproj", "Uno.UWPSyncGenerator\\Uno.UWPSyncGenerator.csproj", - "Uno.UWP\\Uno.Skia.csproj", - "Uno.UWP\\Uno.Wasm.csproj", "Uno.UWP\\Uno.csproj", "Uno.WinUIRevert\\Uno.WinUIRevert.csproj", "UnoItemTemplate\\UnoItemTemplate.csproj" diff --git a/build/filters/Uno.UI-packages-skia.slnf b/build/filters/Uno.UI-packages-skia.slnf new file mode 100644 index 000000000000..109036e7daf5 --- /dev/null +++ b/build/filters/Uno.UI-packages-skia.slnf @@ -0,0 +1,51 @@ +{ + "solution": { + "path": "Uno.UI.sln", + "projects": [ + "AddIns\\Uno.UI.Lottie\\Uno.UI.Lottie.Skia.csproj", + "AddIns\\Uno.UI.MSAL\\Uno.UI.MSAL.Skia.csproj", + "SamplesApp\\Benchmarks.Shared\\SamplesApp.Benchmarks.shproj", + "SamplesApp\\SamplesApp.Shared\\SamplesApp.Shared.shproj", + "SamplesApp\\SamplesApp.Skia.Gtk\\SamplesApp.Skia.Gtk.csproj", + "SamplesApp\\SamplesApp.Skia.Linux.FrameBuffer\\SamplesApp.Skia.Linux.FrameBuffer.csproj", + "SamplesApp\\SamplesApp.Skia.Tizen\\SamplesApp.Skia.Tizen.csproj", + "SamplesApp\\SamplesApp.Skia.WPF\\SamplesApp.Skia.WPF.csproj", + "SamplesApp\\SamplesApp.Skia\\SamplesApp.Skia.csproj", + "SamplesApp\\SamplesApp.UITests.Generator\\Uno.Samples.UITest.Generator.csproj", + "SamplesApp\\SamplesApp.UITests\\SamplesApp.UITests.csproj", + "SamplesApp\\SamplesApp.UWP.Design\\SamplesApp.UWP.Design.csproj", + "SamplesApp\\SamplesApp.UnitTests.Shared\\SamplesApp.UnitTests.Shared.shproj", + "SamplesApp\\UITests.Shared\\UITests.Shared.shproj", + "SamplesApp\\UnoIslands.Shared\\UnoIslands.Shared.shproj", + "SamplesApp\\UnoIslands.Skia\\UnoIslands.Skia.csproj", + "SamplesApp\\UnoIslands.WPF\\UnoIslands.Skia.Wpf.csproj", + "SamplesApp\\UnoIslands.WinForms\\UnoIslands.WinForms.csproj", + "SolutionTemplate\\Uno.ProjectTemplates.Dotnet\\Uno.ProjectTemplates.Dotnet.csproj", + "SourceGenerators\\System.Xaml\\Uno.Xaml.csproj", + "SourceGenerators\\Uno.UI.SourceGenerators.Internal\\Uno.UI.SourceGenerators.Internal.csproj", + "SourceGenerators\\Uno.UI.SourceGenerators\\Uno.UI.SourceGenerators.csproj", + "SourceGenerators\\Uno.UI.Tasks\\Uno.UI.Tasks.csproj", + "T4Generator\\T4Generator.csproj", + "Uno.Foundation.Logging\\Uno.Foundation.Logging.csproj", + "Uno.Foundation\\Uno.Foundation.Skia.csproj", + "Uno.UI.Adapter.Microsoft.Extensions.Logging\\Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj", + "Uno.UI.Composition\\Uno.UI.Composition.Skia.csproj", + "Uno.UI.Dispatching\\Uno.UI.Dispatching.Skia.csproj", + "Uno.UI.FluentTheme.v1\\Uno.UI.FluentTheme.v1.Skia.csproj", + "Uno.UI.FluentTheme.v2\\Uno.UI.FluentTheme.v2.Skia.csproj", + "Uno.UI.FluentTheme\\Uno.UI.FluentTheme.Skia.csproj", + "Uno.UI.RemoteControl.Server\\Uno.UI.RemoteControl.Server.csproj", + "Uno.UI.RemoteControl\\Uno.UI.RemoteControl.Skia.csproj", + "Uno.UI.Runtime.Skia.Gtk\\Uno.UI.Runtime.Skia.Gtk.csproj", + "Uno.UI.Runtime.Skia.Linux.FrameBuffer\\Uno.UI.Runtime.Skia.Linux.FrameBuffer.csproj", + "Uno.UI.Runtime.Skia.Tizen\\Uno.UI.Runtime.Skia.Tizen.csproj", + "Uno.UI.Runtime.Skia.Wpf\\Uno.UI.Runtime.Skia.Wpf.csproj", + "Uno.UI.RuntimeTests\\Uno.UI.RuntimeTests.Skia.csproj", + "Uno.UI.Toolkit\\Uno.UI.Toolkit.Skia.csproj", + "Uno.UI.XamlHost.Skia.Wpf\\Uno.UI.XamlHost.Skia.Wpf.csproj", + "Uno.UI.XamlHost\\Uno.UI.XamlHost.Skia.csproj", + "Uno.UI\\Uno.UI.Skia.csproj", + "Uno.UWP\\Uno.Skia.csproj" + ] + } +} diff --git a/build/filters/Uno.UI-packages-wasm.slnf b/build/filters/Uno.UI-packages-wasm.slnf new file mode 100644 index 000000000000..2d9858648691 --- /dev/null +++ b/build/filters/Uno.UI-packages-wasm.slnf @@ -0,0 +1,42 @@ +{ + "solution": { + "path": "..\\..\\src\\Uno.UI.sln", + "projects": [ + "AddIns\\Uno.UI.Lottie\\Uno.UI.Lottie.Wasm.csproj", + "AddIns\\Uno.UI.MSAL\\Uno.UI.MSAL.Wasm.csproj", + "SamplesApp\\Benchmarks.Shared\\SamplesApp.Benchmarks.shproj", + "SamplesApp\\SamplesApp.Shared\\SamplesApp.Shared.shproj", + "SamplesApp\\SamplesApp.UITests.Generator\\Uno.Samples.UITest.Generator.csproj", + "SamplesApp\\SamplesApp.UITests\\SamplesApp.UITests.csproj", + "SamplesApp\\SamplesApp.UnitTests.Shared\\SamplesApp.UnitTests.Shared.shproj", + "SamplesApp\\SamplesApp.Wasm\\SamplesApp.Wasm.csproj", + "SamplesApp\\UITests.Shared\\UITests.Shared.shproj", + "SourceGenerators\\System.Xaml\\Uno.Xaml.csproj", + "SourceGenerators\\Uno.UI.SourceGenerators.Internal\\Uno.UI.SourceGenerators.Internal.csproj", + "SourceGenerators\\Uno.UI.SourceGenerators\\Uno.UI.SourceGenerators.csproj", + "SourceGenerators\\Uno.UI.Tasks\\Uno.UI.Tasks.csproj", + "T4Generator\\T4Generator.csproj", + "Uno.Foundation.Logging\\Uno.Foundation.Logging.csproj", + "Uno.Foundation.Runtime.WebAssembly\\Uno.Foundation.Runtime.WebAssembly.csproj", + "Uno.Foundation\\Uno.Foundation.Wasm.csproj", + "Uno.UI.Adapter.Microsoft.Extensions.Logging\\Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj", + "Uno.UI.Composition\\Uno.UI.Composition.Wasm.csproj", + "Uno.UI.Dispatching\\Uno.UI.Dispatching.Wasm.csproj", + "Uno.UI.FluentTheme.v1\\Uno.UI.FluentTheme.v1.Wasm.csproj", + "Uno.UI.FluentTheme.v2\\Uno.UI.FluentTheme.v2.Wasm.csproj", + "Uno.UI.FluentTheme\\Uno.UI.FluentTheme.Wasm.csproj", + "Uno.UI.RemoteControl.Host\\Uno.UI.RemoteControl.Host.csproj", + "Uno.UI.RemoteControl.Server.Processors\\Uno.UI.RemoteControl.Server.Processors.csproj", + "Uno.UI.RemoteControl.Server\\Uno.UI.RemoteControl.Server.csproj", + "Uno.UI.RemoteControl.VS\\Uno.UI.RemoteControl.VS.csproj", + "Uno.UI.RemoteControl\\Uno.UI.RemoteControl.Wasm.csproj", + "Uno.UI.Runtime.WebAssembly.Compatibility\\Uno.UI.Runtime.WebAssembly.Compatibility.csproj", + "Uno.UI.Runtime.WebAssembly\\Uno.UI.Runtime.WebAssembly.csproj", + "Uno.UI.RuntimeTests\\Uno.UI.RuntimeTests.Wasm.csproj", + "Uno.UI.Toolkit\\Uno.UI.Toolkit.Wasm.csproj", + "Uno.UI.Wasm.Tests\\Uno.UI.Wasm.Tests.csproj", + "Uno.UI\\Uno.UI.Wasm.csproj", + "Uno.UWP\\Uno.Wasm.csproj" + ] + } +} diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index e471f18581ef..dbc7b5a41969 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -50,8 +50,8 @@ - - + + diff --git a/src/PlatformItemGroups.props b/src/PlatformItemGroups.props index f702df5e5d90..815c555d9848 100644 --- a/src/PlatformItemGroups.props +++ b/src/PlatformItemGroups.props @@ -17,7 +17,7 @@ <_IsNet Condition="'$(TargetFramework)'=='net461'">true <_IsNetCore>false - <_IsNetCore Condition="'$(TargetFramework)'=='net5.0'">true + <_IsNetCore Condition="'$(TargetFramework)'=='net5.0' or '$(TargetFramework)'=='net6.0' or '$(TargetFramework)'=='net7.0'">true <_IsNetStd>false <_IsNetStd Condition="'$(TargetFramework)'=='netstandard2.0' or $(_IsNetCore)">true diff --git a/src/SamplesApp/SamplesApp.Wasm/SamplesApp.Wasm.csproj b/src/SamplesApp/SamplesApp.Wasm/SamplesApp.Wasm.csproj index 7c08db3a50ef..37c0d0a32589 100644 --- a/src/SamplesApp/SamplesApp.Wasm/SamplesApp.Wasm.csproj +++ b/src/SamplesApp/SamplesApp.Wasm/SamplesApp.Wasm.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net7.0 $(DefineConstants);__WASM__;HAS_UNO;UNO_REFERENCE_API $(NoWarn);NU1701;CS1998;NU1504;UXAML0002 $(NoWarn);CA1834 @@ -64,7 +64,6 @@ - @@ -76,7 +75,7 @@ - + diff --git a/src/Uno.Foundation.Logging/Uno.Foundation.Logging.csproj b/src/Uno.Foundation.Logging/Uno.Foundation.Logging.csproj index 28cf194f576d..7bddf84f7a66 100644 --- a/src/Uno.Foundation.Logging/Uno.Foundation.Logging.csproj +++ b/src/Uno.Foundation.Logging/Uno.Foundation.Logging.csproj @@ -1,8 +1,12 @@  - + xamarinmac20;xamarinios10;MonoAndroid12.0;net461;netstandard2.0 MonoAndroid11.0;MonoAndroid12.0;xamarinios10;net461;netstandard2.0;xamarinmac20 + + + netstandard2.0;net7.0 + $(UnoTargetFrameworkOverride) diff --git a/src/Uno.Foundation.Runtime.WebAssembly/Uno.Foundation.Runtime.WebAssembly.csproj b/src/Uno.Foundation.Runtime.WebAssembly/Uno.Foundation.Runtime.WebAssembly.csproj index 895a38f7d8f1..f3ecb52c407e 100644 --- a/src/Uno.Foundation.Runtime.WebAssembly/Uno.Foundation.Runtime.WebAssembly.csproj +++ b/src/Uno.Foundation.Runtime.WebAssembly/Uno.Foundation.Runtime.WebAssembly.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.Foundation/Uno.Foundation.Skia.csproj b/src/Uno.Foundation/Uno.Foundation.Skia.csproj index d6b8f76d4bef..103d6a290ede 100644 --- a/src/Uno.Foundation/Uno.Foundation.Skia.csproj +++ b/src/Uno.Foundation/Uno.Foundation.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.Foundation/Uno.Foundation.Wasm.csproj b/src/Uno.Foundation/Uno.Foundation.Wasm.csproj index a9c47fe1eabd..85c0415af9a7 100644 --- a/src/Uno.Foundation/Uno.Foundation.Wasm.csproj +++ b/src/Uno.Foundation/Uno.Foundation.Wasm.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Adapter.Microsoft.Extensions.Logging/Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj b/src/Uno.UI.Adapter.Microsoft.Extensions.Logging/Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj index 1add0dae5719..01b747361c4b 100644 --- a/src/Uno.UI.Adapter.Microsoft.Extensions.Logging/Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj +++ b/src/Uno.UI.Adapter.Microsoft.Extensions.Logging/Uno.UI.Adapter.Microsoft.Extensions.Logging.csproj @@ -1,9 +1,13 @@  - + xamarinmac20;xamarinios10;MonoAndroid12.0;net461;netstandard2.0 MonoAndroid11.0;MonoAndroid12.0;xamarinios10;net461;netstandard2.0;xamarinmac20 + + netstandard2.0;net7.0 + + $(UnoTargetFrameworkOverride) diff --git a/src/Uno.UI.Composition/Uno.UI.Composition.Skia.csproj b/src/Uno.UI.Composition/Uno.UI.Composition.Skia.csproj index cf7f1ba0626a..05ba645809ce 100644 --- a/src/Uno.UI.Composition/Uno.UI.Composition.Skia.csproj +++ b/src/Uno.UI.Composition/Uno.UI.Composition.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Composition/Uno.UI.Composition.Wasm.csproj b/src/Uno.UI.Composition/Uno.UI.Composition.Wasm.csproj index da432f986aef..1f41b592ab4c 100644 --- a/src/Uno.UI.Composition/Uno.UI.Composition.Wasm.csproj +++ b/src/Uno.UI.Composition/Uno.UI.Composition.Wasm.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Skia.csproj b/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Skia.csproj index 3508ff636e78..c77818949e0d 100644 --- a/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Skia.csproj +++ b/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Wasm.csproj b/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Wasm.csproj index 765e8d4a9ea9..600437fb7063 100644 --- a/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Wasm.csproj +++ b/src/Uno.UI.Dispatching/Uno.UI.Dispatching.Wasm.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Skia.csproj b/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Skia.csproj index 0c2f14237d14..9387b947bdce 100644 --- a/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Skia.csproj +++ b/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Wasm.csproj b/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Wasm.csproj index f2f95f779f0a..47d725e21bf8 100644 --- a/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Wasm.csproj +++ b/src/Uno.UI.FluentTheme.v1/Uno.UI.FluentTheme.v1.Wasm.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Skia.csproj b/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Skia.csproj index 15511d41ed7c..a729ee6e444b 100644 --- a/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Skia.csproj +++ b/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Wasm.csproj b/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Wasm.csproj index 1b0e4a4db296..a15f0c1f7c83 100644 --- a/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Wasm.csproj +++ b/src/Uno.UI.FluentTheme.v2/Uno.UI.FluentTheme.v2.Wasm.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Skia.csproj b/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Skia.csproj index 8a542fb71ad3..ce3038540d26 100644 --- a/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Skia.csproj +++ b/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Wasm.csproj b/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Wasm.csproj index b0df499729df..8e1acfefc089 100644 --- a/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Wasm.csproj +++ b/src/Uno.UI.FluentTheme/Uno.UI.FluentTheme.Wasm.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Skia.csproj b/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Skia.csproj index 098b3071790c..d3ed5443080d 100644 --- a/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Skia.csproj +++ b/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Skia.csproj @@ -1,7 +1,7 @@  - netstandard2.0;net5.0 + netstandard2.0;net5.0;net7.0 diff --git a/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Wasm.csproj b/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Wasm.csproj index fae2f0f32f14..5afd290c603a 100644 --- a/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Wasm.csproj +++ b/src/Uno.UI.RemoteControl/Uno.UI.RemoteControl.Wasm.csproj @@ -1,7 +1,7 @@  - netstandard2.0;net5.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Uno.UI.Runtime.Skia.Gtk.csproj b/src/Uno.UI.Runtime.Skia.Gtk/Uno.UI.Runtime.Skia.Gtk.csproj index f0452b94845a..bb3ff27de20b 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Uno.UI.Runtime.Skia.Gtk.csproj +++ b/src/Uno.UI.Runtime.Skia.Gtk/Uno.UI.Runtime.Skia.Gtk.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1 + netcoreapp3.1;net7.0 diff --git a/src/Uno.UI.Runtime.Skia.Linux.FrameBuffer/Uno.UI.Runtime.Skia.Linux.FrameBuffer.csproj b/src/Uno.UI.Runtime.Skia.Linux.FrameBuffer/Uno.UI.Runtime.Skia.Linux.FrameBuffer.csproj index 7e330e56484c..0e2a5be3fec7 100644 --- a/src/Uno.UI.Runtime.Skia.Linux.FrameBuffer/Uno.UI.Runtime.Skia.Linux.FrameBuffer.csproj +++ b/src/Uno.UI.Runtime.Skia.Linux.FrameBuffer/Uno.UI.Runtime.Skia.Linux.FrameBuffer.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1 + netcoreapp3.1;net7.0 enable true diff --git a/src/Uno.UI.Runtime.Skia.Wpf/Uno.UI.Runtime.Skia.Wpf.csproj b/src/Uno.UI.Runtime.Skia.Wpf/Uno.UI.Runtime.Skia.Wpf.csproj index f1d2a95ae613..d7ce59f6e6a1 100644 --- a/src/Uno.UI.Runtime.Skia.Wpf/Uno.UI.Runtime.Skia.Wpf.csproj +++ b/src/Uno.UI.Runtime.Skia.Wpf/Uno.UI.Runtime.Skia.Wpf.csproj @@ -1,7 +1,7 @@  - net47;netcoreapp3.1 + net47;netcoreapp3.1;net7.0 diff --git a/src/Uno.UI.Runtime.WebAssembly.Compatibility/Uno.UI.Runtime.WebAssembly.Compatibility.csproj b/src/Uno.UI.Runtime.WebAssembly.Compatibility/Uno.UI.Runtime.WebAssembly.Compatibility.csproj index be6b0aa7e514..1b75965f9e8a 100644 --- a/src/Uno.UI.Runtime.WebAssembly.Compatibility/Uno.UI.Runtime.WebAssembly.Compatibility.csproj +++ b/src/Uno.UI.Runtime.WebAssembly.Compatibility/Uno.UI.Runtime.WebAssembly.Compatibility.csproj @@ -1,6 +1,6 @@  - netstandard2.0;net5.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Runtime.WebAssembly/Uno.UI.Runtime.WebAssembly.csproj b/src/Uno.UI.Runtime.WebAssembly/Uno.UI.Runtime.WebAssembly.csproj index ac986f200cf6..3dcbdaad8073 100644 --- a/src/Uno.UI.Runtime.WebAssembly/Uno.UI.Runtime.WebAssembly.csproj +++ b/src/Uno.UI.Runtime.WebAssembly/Uno.UI.Runtime.WebAssembly.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Skia.csproj b/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Skia.csproj index d3d7d3fc9b49..07c0e25f5add 100644 --- a/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Skia.csproj +++ b/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Skia.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Wasm.csproj b/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Wasm.csproj index 837a88d5878a..b9d126f1e7da 100644 --- a/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Wasm.csproj +++ b/src/Uno.UI.RuntimeTests/Uno.UI.RuntimeTests.Wasm.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Skia.csproj b/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Skia.csproj index b6642f49f05f..132763706240 100644 --- a/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Skia.csproj +++ b/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Wasm.csproj b/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Wasm.csproj index 9400905b36e5..f990a8faeb7a 100644 --- a/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Wasm.csproj +++ b/src/Uno.UI.Toolkit/Uno.UI.Toolkit.Wasm.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI.Wasm.Tests/Tests/TSBindingsTests.cs b/src/Uno.UI.Wasm.Tests/Tests/TSBindingsTests.cs index 059e41beca30..17e227f92f26 100644 --- a/src/Uno.UI.Wasm.Tests/Tests/TSBindingsTests.cs +++ b/src/Uno.UI.Wasm.Tests/Tests/TSBindingsTests.cs @@ -7,6 +7,9 @@ using Uno; using Windows.Foundation; using Uno.Foundation.Interop; +using System.Runtime.InteropServices.JavaScript; +using System.Net.WebSockets; +using System.Diagnostics; namespace SamplesApp.UnitTests.TSBindings { @@ -15,6 +18,34 @@ namespace SamplesApp.UnitTests.TSBindings public class TSBindingsTests { +#if NET7_0_OR_GREATER + [TestMethod] + public void When_TestPerf() + { + var sw1 = Stopwatch.StartNew(); + for (int i = 0; i < 1000; i++) + { + string r = TestImport.When_SingleStringNet7(i.ToString()); + } + + Console.WriteLine($"net7 interop: {sw1.Elapsed}"); + + var sw2 = Stopwatch.StartNew(); + for (int i = 0; i < 1000; i++) + { + var param = new When_SingleStringParams() + { + MyString = "This is 42" + }; + + var ret = (GenericReturn)TSInteropMarshaller.InvokeJS("TSBindingsUnitTests:When_SingleString", param, typeof(GenericReturn)); + + } + + Console.WriteLine($"uno ts interop: {sw2.Elapsed}"); + } +#endif + [TestMethod] public void When_IntPtr() { @@ -165,6 +196,14 @@ public void When_ArrayOfNullStrings() } } +#if NET7_0_OR_GREATER + partial class TestImport + { + [JSImport("globalThis.TSBindingsTests.When_SingleStringNet7")] + internal static partial string When_SingleStringNet7(string value); + } +#endif + [TSInteropMessage] [StructLayout(LayoutKind.Sequential, Pack = 4)] public struct When_ArrayOfStringsParams diff --git a/src/Uno.UI.Wasm.Tests/Uno.UI.Wasm.Tests.csproj b/src/Uno.UI.Wasm.Tests/Uno.UI.Wasm.Tests.csproj index 6890e98bdf95..81326885a75a 100644 --- a/src/Uno.UI.Wasm.Tests/Uno.UI.Wasm.Tests.csproj +++ b/src/Uno.UI.Wasm.Tests/Uno.UI.Wasm.Tests.csproj @@ -1,7 +1,7 @@  - netstandard2.0;net5.0 + netstandard2.0;net7.0 $(MSBuildThisFileDirectory)tsbindings $(DefineConstants);__WASM__ @@ -10,6 +10,7 @@ true true + true diff --git a/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.d.ts b/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.d.ts index a044c32b47b3..8bde78da8d8e 100644 --- a/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.d.ts +++ b/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.d.ts @@ -1,5 +1,6 @@ declare class TSBindingsTests { TSBindingsTests(): void; + static When_SingleStringNet7(value: string): string; When_IntPtr(pParams: number, pReturn: number): boolean; When_IntPtr_Zero(pParams: number, pReturn: number): boolean; When_SingleString(pParams: number, pReturn: number): boolean; diff --git a/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.js b/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.js index d09f98b152db..a2e67a580483 100644 --- a/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.js +++ b/src/Uno.UI.Wasm.Tests/WasmScripts/UnitTests.js @@ -4,6 +4,9 @@ require([`${config.uno_app_base}/Uno.UI`], () => { class TSBindingsTests { TSBindingsTests() { } + static When_SingleStringNet7(value) { + return value; + } When_IntPtr(pParams, pReturn) { var params = SamplesApp.UnitTests.TSBindings.When_IntPtrParams.unmarshal(pParams); var ret = new SamplesApp.UnitTests.TSBindings.GenericReturn(); diff --git a/src/Uno.UI.Wasm.Tests/ts/TSBindingsTests.ts b/src/Uno.UI.Wasm.Tests/ts/TSBindingsTests.ts index ee1534905149..8cdc673b9ba3 100644 --- a/src/Uno.UI.Wasm.Tests/ts/TSBindingsTests.ts +++ b/src/Uno.UI.Wasm.Tests/ts/TSBindingsTests.ts @@ -6,7 +6,11 @@ class TSBindingsTests { public TSBindingsTests() { + // https://github.com/dotnet/runtime/blob/a919d611e832bfee46fc34762f5ded2006c9f16d/src/mono/wasm/runtime/invoke-js.ts + } + public static When_SingleStringNet7(value: string): string { + return value; } public When_IntPtr(pParams: number, pReturn: number): boolean { diff --git a/src/Uno.UI/Uno.UI.Skia.csproj b/src/Uno.UI/Uno.UI.Skia.csproj index 1c6433c896e2..b05a50b81a12 100644 --- a/src/Uno.UI/Uno.UI.Skia.csproj +++ b/src/Uno.UI/Uno.UI.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UI/Uno.UI.Wasm.csproj b/src/Uno.UI/Uno.UI.Wasm.csproj index c22d285a473c..335e1dc60357 100644 --- a/src/Uno.UI/Uno.UI.Wasm.csproj +++ b/src/Uno.UI/Uno.UI.Wasm.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UWP/Uno.Skia.csproj b/src/Uno.UWP/Uno.Skia.csproj index f2c76a3c77f0..c3f2055b6682 100644 --- a/src/Uno.UWP/Uno.Skia.csproj +++ b/src/Uno.UWP/Uno.Skia.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net7.0 diff --git a/src/Uno.UWP/Uno.Wasm.csproj b/src/Uno.UWP/Uno.Wasm.csproj index 339cf77ff510..1f29eb5fa3f8 100644 --- a/src/Uno.UWP/Uno.Wasm.csproj +++ b/src/Uno.UWP/Uno.Wasm.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.0;net7.0