diff --git a/eng/Versions.props b/eng/Versions.props index ca27a71526e9546114e2222b4e7ec51cb70df7e8..7a64cfa5e928681a50cb17b3cc58ab1149994947 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -6,7 +6,9 @@ 8 0 0 - 7.0.100 + 8.0.100 + 6.0.10 + 7.0.0-rc.2.22458.4 alpha 1 - 8.0.0-alpha.1.22417.1 + 8.0.0-alpha.1.22457.2 $(MicrosoftNETWorkloadEmscriptenManifest70100Version) 1.1.87-gba258badda diff --git a/eng/pipelines/common/evaluate-default-paths.yml b/eng/pipelines/common/evaluate-default-paths.yml index 239d34d3589ecc6666c42bdc4d3a4c03d588ecc2..b5954295451a525495607db09d98a85b0196c306 100644 --- a/eng/pipelines/common/evaluate-default-paths.yml +++ b/eng/pipelines/common/evaluate-default-paths.yml @@ -150,6 +150,8 @@ jobs: - src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/* - src/mono/nuget/Microsoft.NET.Runtime.wasm.Sample.Mono/* - src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/* + - src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/* + - src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/* - src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/* - src/mono/wasm/build/* - src/mono/wasm/emscripten-version.txt diff --git a/eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml b/eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml index 96f61a17ce3c8d6b3bf5cc6a2087f31aaab3fa23..acda734f0068c0625f8c0efe6d5cd77b1b97537b 100644 --- a/eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml +++ b/eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml @@ -12,7 +12,7 @@ steps: - script: >- mkdir -p $(Build.SourcesDirectory)/artifacts/staging && - cp -r $(Build.SourcesDirectory)/artifacts/bin/dotnet-workload $(Build.SourcesDirectory)/artifacts/staging && + cp -r $(Build.SourcesDirectory)/artifacts/bin/dotnet-net7+latest $(Build.SourcesDirectory)/artifacts/staging && cp -r $(Build.SourcesDirectory)/artifacts/bin/microsoft.netcore.app.runtime.browser-wasm $(Build.SourcesDirectory)/artifacts/staging && cp -r $(Build.SourcesDirectory)/artifacts/bin/microsoft.netcore.app.ref $(Build.SourcesDirectory)/artifacts/staging displayName: "Prepare artifacts staging directory" diff --git a/eng/pipelines/coreclr/templates/perf-job.yml b/eng/pipelines/coreclr/templates/perf-job.yml index 60f603de7962b30d7d57b12a004260774b842c1d..a26eda5a75e538c0553acbee76c8e4eb2af4c8a5 100644 --- a/eng/pipelines/coreclr/templates/perf-job.yml +++ b/eng/pipelines/coreclr/templates/perf-job.yml @@ -184,7 +184,7 @@ jobs: - script: >- mkdir -p $(librariesDownloadDir)/bin/wasm/wasm-data && mkdir -p $(librariesDownloadDir)/bin/wasm/dotnet && - cp -r $(librariesDownloadDir)/BrowserWasm/staging/dotnet-workload/* $(librariesDownloadDir)/bin/wasm/dotnet && + cp -r $(librariesDownloadDir)/BrowserWasm/staging/dotnet-net7+latest/* $(librariesDownloadDir)/bin/wasm/dotnet && cp src/mono/wasm/test-main.js $(librariesDownloadDir)/bin/wasm/wasm-data/test-main.js && find $(librariesDownloadDir)/bin/wasm -type d && find $(librariesDownloadDir)/bin/wasm -type f -exec chmod 664 {} \; diff --git a/eng/pipelines/coreclr/templates/run-scenarios-job.yml b/eng/pipelines/coreclr/templates/run-scenarios-job.yml index f22aa119d0d81cc1760fd26ef013496211208b37..99e2e7958fe17cbeb1c020a97e43e1ac5eace057 100644 --- a/eng/pipelines/coreclr/templates/run-scenarios-job.yml +++ b/eng/pipelines/coreclr/templates/run-scenarios-job.yml @@ -144,7 +144,7 @@ jobs: # copy wasm packs if running on wasm - script: >- mkdir -p $(librariesDownloadDir)/bin/wasm/data && - cp -r $(librariesDownloadDir)/BrowserWasm/staging/dotnet-workload $(librariesDownloadDir)/bin/wasm && + cp -r $(librariesDownloadDir)/BrowserWasm/staging/dotnet-net7+latest $(librariesDownloadDir)/bin/wasm && cp src/mono/wasm/test-main.js $(librariesDownloadDir)/bin/wasm/data/test-main.js && find $(librariesDownloadDir)/bin/wasm -type f -exec chmod 664 {} \; displayName: "Create wasm directory (Linux)" diff --git a/eng/pipelines/mono/templates/workloads-build.yml b/eng/pipelines/mono/templates/workloads-build.yml index f7be008c648533cd32ddbe9971df10f2e3dc3d02..fd78968fb712589a92122a6310b54e77969d6ae5 100644 --- a/eng/pipelines/mono/templates/workloads-build.yml +++ b/eng/pipelines/mono/templates/workloads-build.yml @@ -64,6 +64,8 @@ jobs: IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvos-*.nupkg IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.Manifest*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest*.nupkg IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg @@ -89,7 +91,7 @@ jobs: - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml parameters: name: workloads - + # Publish Logs - task: PublishPipelineArtifact@1 displayName: Publish Logs diff --git a/eng/pipelines/runtime-extra-platforms-wasm.yml b/eng/pipelines/runtime-extra-platforms-wasm.yml index 466ffb12e84993126d9eafe366948fe23206682b..887d4be4e25959e95ae3ffb20e72922edbf8be37 100644 --- a/eng/pipelines/runtime-extra-platforms-wasm.yml +++ b/eng/pipelines/runtime-extra-platforms-wasm.yml @@ -178,14 +178,13 @@ jobs: - ${{ if and(ne(parameters.isRollingBuild, true), ne(parameters.excludeNonLibTests, true)) }}: # Wasm.Build.Tests - # Issue: https://github.com/dotnet/runtime/issues/75223 - #- template: /eng/pipelines/common/templates/wasm-build-tests.yml - #parameters: - #platforms: - #- Browser_wasm - #- Browser_wasm_win - #isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - #isWasmOnlyBuild: ${{ parameters.isWasmOnlyBuild }} + - template: /eng/pipelines/common/templates/wasm-build-tests.yml + parameters: + platforms: + - Browser_wasm + - Browser_wasm_win + isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} + isWasmOnlyBuild: ${{ parameters.isWasmOnlyBuild }} # Debugger tests - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 08f41b85a35f369ce21e444a60a3c62280f488d2..a32b0155816d121b9ec204273aa7a7909d7a3716 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -418,13 +418,12 @@ jobs: alwaysRun: ${{ variables.isRollingBuild }} # Wasm.Build.Tests -# Issue: https://github.com/dotnet/runtime/issues/75223 -#- template: /eng/pipelines/common/templates/wasm-build-tests.yml - #parameters: - #platforms: - #- Browser_wasm - #- Browser_wasm_win - #alwaysRun: ${{ variables.isRollingBuild }} +- template: /eng/pipelines/common/templates/wasm-build-tests.yml + parameters: + platforms: + - Browser_wasm + - Browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} # Wasm Debugger tests - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml diff --git a/eng/testing/provisioning.targets b/eng/testing/provisioning.targets index 38293a916706de013f82a9e28c8bba64d7ddd5e9..040f423fa19f9280cfc87e95174daaeef36cc418 100644 --- a/eng/testing/provisioning.targets +++ b/eng/testing/provisioning.targets @@ -1,8 +1,10 @@ $(ArtifactsBinDir)chrome\ + $(ArtifactsBinDir)chromedriver\ $(ArtifactsBinDir)\ $(BrowserStampDir).install-chrome-$(ChromiumRevision).stamp + $(BrowserStampDir).install-chromedriver-$(ChromiumRevision).stamp $(ArtifactsBinDir)firefox\ $(BrowserStampDir).install-firefox-$(FirefoxRevision).stamp @@ -37,6 +39,34 @@ + + + + <_StampFile Include="$(BrowserStampDir).install-chromedriver*.stamp" /> + + + + + + + + + + + + <_ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), 'chromedriver')) + + + + + + + + + diff --git a/eng/testing/scenarios/BuildWasmAppsJobsList.txt b/eng/testing/scenarios/BuildWasmAppsJobsList.txt index 143b2fa2d3a21e59adad46dec41aa4495f3bdea2..3395359f42801a2c3e0459289480e356d95d0757 100644 --- a/eng/testing/scenarios/BuildWasmAppsJobsList.txt +++ b/eng/testing/scenarios/BuildWasmAppsJobsList.txt @@ -20,4 +20,3 @@ Wasm.Build.Tests.WasmNativeDefaultsTests Wasm.Build.Tests.WasmRunOutOfAppBundleTests Wasm.Build.Tests.WasmSIMDTests Wasm.Build.Tests.WasmTemplateTests -Wasm.Build.Tests.WorkloadTests diff --git a/eng/testing/tests.wasm.targets b/eng/testing/tests.wasm.targets index 0d6a88c5be658e463008c5894482dd4e8c7debef..117fe92207f939660613dcd2caf02df1c76e8cfc 100644 --- a/eng/testing/tests.wasm.targets +++ b/eng/testing/tests.wasm.targets @@ -27,6 +27,8 @@ <_WasmStrictVersionMatch Condition="'$(ContinuousIntegrationBuild)' == 'true'">true true <_UseWasmSymbolicator Condition="'$(TestTrimming)' != 'true'">true + true + false @@ -138,15 +140,32 @@ - - + + + + + + + + + diff --git a/eng/testing/workloads-testing.targets b/eng/testing/workloads-testing.targets index 5da047758f81859f7710a60688e856c7187ba655..e36149b7d4b639c8dc6ea06f73c79b692b3ef3a7 100644 --- a/eng/testing/workloads-testing.targets +++ b/eng/testing/workloads-testing.targets @@ -5,6 +5,12 @@ true + + <_SdkForWorkloadTestingBasePath>$(ArtifactsBinDir) + <_SdkWithNoWorkloadPath>$([MSBuild]::NormalizeDirectory($(_SdkForWorkloadTestingBasePath), 'dotnet-none')) + <_SdkWithNoWorkloadStampPath>$([MSBuild]::NormalizePath($(_SdkWithNoWorkloadPath), '.version-$(SdkVersionForWorkloadTesting).stamp')) + + <_DefaultPropsForNuGetBuild Include="Configuration=$(Configuration)" /> <_DefaultPropsForNuGetBuild Include="TargetOS=Browser" /> @@ -12,43 +18,21 @@ <_DefaultPropsForNuGetBuild Include="ContinuousIntegrationBuild=$(ContinuousIntegrationBuild)" /> - + + - - - - - - - - <_SourceFiles Include="$(SdkWithNoWorkloadForTestingPath)\**" /> + <_SdkWithNoWorkloadTarget Include="none" InstallPath="$(_SdkWithNoWorkloadPath)" /> - - - - - - - - - - - - - - + + <_DotNetInstallScriptName Condition="!$([MSBuild]::IsOSPlatform('windows'))">dotnet-install.sh @@ -59,16 +43,16 @@ <_DotNetInstallCommand Condition="!$([MSBuild]::IsOSPlatform('windows'))" - >$(_DotNetInstallScriptPath) -i $(SdkWithNoWorkloadForTestingPath) -v $(SdkVersionForWorkloadTesting) + >$(_DotNetInstallScriptPath) -i $(_SdkWithNoWorkloadPath) -v $(SdkVersionForWorkloadTesting) <_DotNetInstallCommand Condition="$([MSBuild]::IsOSPlatform('windows'))" - >$(_DotNetInstallScriptPath) -InstallDir $(SdkWithNoWorkloadForTestingPath) -Version $(SdkVersionForWorkloadTesting) + >$(_DotNetInstallScriptPath) -InstallDir $(_SdkWithNoWorkloadPath) -Version $(SdkVersionForWorkloadTesting) <_DotNetInstallCommand Condition="!$([MSBuild]::IsOSPlatform('windows'))" - >$(_DotNetInstallScriptPath) -i $(SdkWithNoWorkloadForTestingPath) -v latest -q daily --channel 7.0 + >$(_DotNetInstallScriptPath) -i $(_SdkWithNoWorkloadPath) -v latest -q daily --channel 8.0 <_DotNetInstallCommand Condition="$([MSBuild]::IsOSPlatform('windows'))" - >$(_DotNetInstallScriptPath) -InstallDir $(SdkWithNoWorkloadForTestingPath) -Quality daily -Channel 7.0 + >$(_DotNetInstallScriptPath) -InstallDir $(_SdkWithNoWorkloadPath) -Quality daily -Channel 8.0 - - + + + <_SdkWithWorkloadToInstall Include="@(WorkloadCombinationsToInstall)" /> + <_SdkWithWorkloadToInstall InstallPath="$(_SdkForWorkloadTestingBasePath)\dotnet-%(Identity)" /> + + <_SdkWithWorkloadToInstall StampPath="%(InstallPath)\version.stamp" /> @@ -104,7 +92,7 @@ @@ -168,7 +156,7 @@ + Text="Expected to find either one or three in $(LibrariesShippingPackagesDir): @(_RuntimePackNugetAvailable->'%(FileName)%(Extension)')" /> <_BuildVariants Include="multithread" Condition="'$(_DefaultBuildVariant)' != '.multithread.'" /> @@ -202,42 +190,24 @@ *******************" /> - + Outputs="@(_SdkWithWorkloadToInstall->'%(StampPath)');$(_SdkWithNoWorkloadStampPath)"> <_BuiltNuGets Include="$(LibrariesShippingPackagesDir)\*.nupkg" /> - - - - - - - - - - - + SdkWithNoWorkloadInstalledPath="$(_SdkWithNoWorkloadPath)" + /> - + diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in deleted file mode 100644 index 6ad7487cb04acec2ca6c30846839c8c0359aa742..0000000000000000000000000000000000000000 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in +++ /dev/null @@ -1,3 +0,0 @@ - - ${PermissionsProperties} - diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj index 27a590bfd08fa6e911b2f7d204492198065d9006..c0141fb950f497212fd0b43cf482d801d68bde0a 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj @@ -19,7 +19,6 @@ - @@ -39,15 +38,7 @@ <_PermissionsFiles>@(_ToolFile -> '<File Path="tools/%(RecursiveDir)%(FileName)%(Extension)" Permission="755" />', ' ') - - <_PermissionsProperties Include="PermissionsProperties" Value="$(_PermissionsFiles)" /> - - - + $(ArtifactsObjDir)TempWorkingDir\$([System.Guid]::NewGuid())\ - + $(ProductionVersion) $(ProductVersion) @@ -101,14 +101,14 @@ Lines="$(ProductVersionTxtContents)" Overwrite="true" Encoding="ASCII" /> - + - + @@ -247,7 +247,7 @@ --> @@ -278,7 +278,7 @@ - + - $(ArtifactsBinDir)sdk-no-workload\ + $(ArtifactsBinDir)dotnet-none\ $([MSBuild]::NormalizeDirectory($(SdkWithNoWorkloadForTestingPath))) $(SdkWithNoWorkloadForTestingPath)version-$(SdkVersionForWorkloadTesting).stamp $(SdkWithNoWorkloadForTestingPath)workload.stamp - $(ArtifactsBinDir)dotnet-workload\ + + $(ArtifactsBinDir)dotnet-net7+latest\ $([MSBuild]::NormalizeDirectory($(SdkWithWorkloadForTestingPath))) $(SdkWithWorkloadForTestingPath)version-$(SdkVersionForWorkloadTesting).stamp diff --git a/src/libraries/sendtohelix-wasm.targets b/src/libraries/sendtohelix-wasm.targets index 1d0008ab7799f246b17af1648ecae4a4c4309ae1..0199035708a630b5a4cdb24514fb6750c665d511 100644 --- a/src/libraries/sendtohelix-wasm.targets +++ b/src/libraries/sendtohelix-wasm.targets @@ -26,6 +26,7 @@ $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'build')) $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'NetCoreServer', '$(Configuration)', '$(AspNetCoreAppCurrent)')) $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'RemoteLoopServer', '$(Configuration)', '$(AspNetCoreAppCurrent)')) + <_ShippingPackagesPath>$([MSBuild]::NormalizeDirectory($(ArtifactsDir), 'packages', $(Configuration), 'Shipping')) $(DebuggerHost)- $(Scenario)- @@ -56,6 +57,7 @@ true true true + true true false @@ -118,9 +120,13 @@ <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' == 'true'">-notrait category=no-workload <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' != 'true'">-trait category=no-workload + + + + @@ -187,6 +193,10 @@ + + + + - + diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 6fc601db985d6e098601826f3e58dc173874a6c8..83138adec2a7b659f40bd6b3050d466575d9c78c 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -60,8 +60,8 @@ $(WaitForWorkItemCompletion) - dotnet-workload - sdk-no-workload + dotnet-net7+latest + dotnet-none diff --git a/src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/Sdk/AutoImport.props b/src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/Sdk/AutoImport.props index 9831506418661e3090de5d2cd759225fe5551d5d..ae730051a116df3ff5a6a333e5c715c25e69824c 100644 --- a/src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/Sdk/AutoImport.props +++ b/src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/Sdk/AutoImport.props @@ -1,5 +1,7 @@ - true + net8.0 + true + diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/Microsoft.NET.Workload.Mono.Toolchain.Manifest.pkgproj b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/Microsoft.NET.Workload.Mono.Toolchain.Manifest.pkgproj index 940dd5cd4f3bfc692109f640f795bc7473e74486..93e177461a63c1c701fe45153c48688767d3eed1 100644 --- a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/Microsoft.NET.Workload.Mono.Toolchain.Manifest.pkgproj +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/Microsoft.NET.Workload.Mono.Toolchain.Manifest.pkgproj @@ -37,6 +37,8 @@ <_WorkloadManifestValues Include="WorkloadVersion" Value="$(PackageVersion)" /> <_WorkloadManifestValues Include="PackageVersion" Value="$(PackageVersion)" /> + <_WorkloadManifestValues Include="PackageVersionNet6" Value="$(PackageVersionNet6)" /> + <_WorkloadManifestValues Include="PackageVersionNet7" Value="$(PackageVersionNet7)" /> <_WorkloadManifestValues Include="NetCoreAppCurrent" Value="$(NetCoreAppCurrent)" /> <_WorkloadManifestValues Include="EmscriptenVersion" Value="$(MicrosoftNETRuntimeEmscriptenVersion)" /> diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.json.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.json.in index 64d946adca32e7967eadc61738c082adc8264e63..8aba9e3597eed28ec23fce047d63039517d037dd 100644 --- a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.json.in +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.json.in @@ -1,7 +1,7 @@ { "version": "${WorkloadVersion}", "depends-on": { - "Microsoft.NET.Workload.Emscripten": "${EmscriptenVersion}" + "Microsoft.NET.Workload.Emscripten.net7": "${EmscriptenVersion}" }, "workloads": { "wasm-tools": { @@ -11,7 +11,7 @@ "Microsoft.NETCore.App.Runtime.Mono.browser-wasm", "Microsoft.NETCore.App.Runtime.AOT.Cross.browser-wasm" ], - "extends": [ "microsoft-net-runtime-mono-tooling", "microsoft-net-sdk-emscripten" ], + "extends": [ "microsoft-net-runtime-mono-tooling", "microsoft-net-sdk-emscripten-net7" ], "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] }, "wasm-experimental": { @@ -142,8 +142,8 @@ "description": "Shared native build tooling for Mono runtime", "packs": [ "Microsoft.NET.Runtime.MonoAOTCompiler.Task", - "Microsoft.NET.Runtime.MonoTargets.Sdk", - ], + "Microsoft.NET.Runtime.MonoTargets.Sdk" + ] } }, "packs": { diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.targets.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.targets.in index 2bbf37d3d038fa57b69875339ae538e7f8680998..51fef4e306b0ff62197db7f17866e53cd38b7c81 100644 --- a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.targets.in +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Manifest/WorkloadManifest.targets.in @@ -1,21 +1,42 @@ - + - ${PackageVersion} - true + <_RuntimePackInWorkloadVersionCurrent>${PackageVersion} + <_RuntimePackInWorkloadVersion7>${PackageVersionNet7} + <_RuntimePackInWorkloadVersion6>${PackageVersionNet6} + + true + true + true + + true + + + + <_BrowserWorkloadNotSupportedForTFM Condition="$([MSBuild]::VersionLessThan($(TargetFrameworkVersion), '6.0'))">true + <_BrowserWorkloadDisabled>$(_BrowserWorkloadNotSupportedForTFM) + + + + + + - - - true - $(WasmNativeWorkload) + + true + true + true - - false - false + + + + <_WasmNativeWorkloadNeeded Condition="'$(RunAOTCompilation)' == 'true' or '$(WasmEnableSIMD)' == 'true' or '$(WasmBuildNative)' == 'true' or + '$(WasmGenerateAppBundle)' == 'true' or '$(UsingMicrosoftNETSdkBlazorWebAssembly)' != 'true'" >true + + false + true + $(WasmNativeWorkloadAvailable) @@ -23,29 +44,31 @@ true - + - + + + - + - + - + - + @@ -53,26 +76,26 @@ - + - + - + - + - + @@ -80,14 +103,14 @@ - + <_MonoWorkloadTargetsMobile>true - <_MonoWorkloadRuntimePackPackageVersion>$(RuntimePackInWorkloadVersion) + <_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersionCurrent) - + - **FromWorkload** + $(_MonoWorkloadRuntimePackPackageVersion) Microsoft.NETCore.App.Runtime.Mono.multithread.**RID** Microsoft.NETCore.App.Runtime.Mono.perftrace.**RID** @@ -97,23 +120,27 @@ - + + + diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest.pkgproj b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest.pkgproj new file mode 100644 index 0000000000000000000000000000000000000000..95cdbc7d2765993f2aba02e3ff1b3c0e0b94a21b --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest.pkgproj @@ -0,0 +1,58 @@ + + + + + Internal toolchain package not meant for direct consumption. Please do not reference directly. + + + + + + Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest-$(SdkBandVersion) + + + + $(IntermediateOutputPath)WorkloadManifest.json + $(IntermediateOutputPath)WorkloadManifest.targets + + + + + + + + + + data/localize + + + + + + + + PackageVersion=$(PackageVersion); + + + + <_WorkloadManifestValues Include="WorkloadVersion" Value="$(PackageVersion)" /> + <_WorkloadManifestValues Include="PackageVersionNet6" Value="$(PackageVersionNet6)" /> + <_WorkloadManifestValues Include="EmscriptenVersion" Value="$(MicrosoftNETRuntimeEmscriptenVersion)" /> + + + + + + + + + + + diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/WorkloadManifest.json.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/WorkloadManifest.json.in new file mode 100644 index 0000000000000000000000000000000000000000..716cd56d9a607f6a7088fe759b9ce84c5551ce90 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/WorkloadManifest.json.in @@ -0,0 +1,453 @@ +{ + "version": "${WorkloadVersion}", + "depends-on": { + "Microsoft.NET.Workload.Emscripten.net6": "${EmscriptenVersion}" + }, + "workloads": { + "wasm-tools-net6": { + "description": ".NET WebAssembly build tools for net6.0", + "packs": [ + "Microsoft.NET.Runtime.WebAssembly.Sdk.net6", + "Microsoft.NETCore.App.Runtime.Mono.net6.browser-wasm", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.browser-wasm" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net6", "microsoft-net-sdk-emscripten-net6" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "microsoft-net-runtime-android-net6": { + "abstract": true, + "description": "Android Mono Runtime", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm", + "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.android-x64", + "Microsoft.NETCore.App.Runtime.Mono.net6.android-x86" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net6" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "microsoft-net-runtime-android-aot-net6": { + "abstract": true, + "description": "Android Mono AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x86", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm64" + ], + "extends": [ "microsoft-net-runtime-android-net6" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "microsoft-net-runtime-ios-net6": { + "abstract": true, + "description": "iOS Mono Runtime and AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x86" + ], + "extends": [ "runtimes-ios-net6" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-ios-net6": { + "abstract": true, + "description": "iOS Mono Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm", + "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x64", + "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x86" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net6" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "microsoft-net-runtime-maccatalyst-net6": { + "abstract": true, + "description": "MacCatalyst Mono Runtime and AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-x64" + ], + "extends": [ "runtimes-maccatalyst-net6" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-maccatalyst-net6": { + "abstract": true, + "description": "MacCatalyst Mono Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-x64" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net6" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "microsoft-net-runtime-macos-net6": { + "abstract": true, + "description": "MacOS CoreCLR and Mono Runtime Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net6.osx-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.osx-x64", + "Microsoft.NETCore.App.Runtime.net6.osx-arm64", + "Microsoft.NETCore.App.Runtime.net6.osx-x64" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net6" ], + "platforms": [ "osx-arm64", "osx-x64" ] + }, + "microsoft-net-runtime-tvos-net6": { + "abstract": true, + "description": "tvOS Mono Runtime and AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvos-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-x64" + ], + "extends": [ "runtimes-tvos-net6" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-tvos-net6": { + "abstract": true, + "description": "tvOS Mono Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net6.tvos-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-x64" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net6" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-windows-net6": { + "description": "Windows Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.net6.win-x64", + "Microsoft.NETCore.App.Runtime.net6.win-x86", + "Microsoft.NETCore.App.Runtime.net6.win-arm", + "Microsoft.NETCore.App.Runtime.net6.win-arm64" + ] + }, + "microsoft-net-runtime-mono-tooling-net6": { + "abstract": true, + "description": "Shared native build tooling for Mono runtime", + "packs": [ + "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net6", + "Microsoft.NET.Runtime.MonoTargets.Sdk.net6" + ] + } + }, + "packs": { + "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net6": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NET.Runtime.MonoAOTCompiler.Task" + } + }, + "Microsoft.NET.Runtime.MonoTargets.Sdk.net6": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NET.Runtime.MonoTargets.Sdk" + } + }, + "Microsoft.NET.Runtime.WebAssembly.Sdk.net6": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NET.Runtime.WebAssembly.Sdk" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.android-x64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.android-x86": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x86": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-arm64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-x64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.osx-arm64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.osx-x64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.osx-x64" + } + }, + "Microsoft.NETCore.App.Runtime.net6.osx-arm64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.net6.osx-x64": { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.osx-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x86" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvos-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.tvos-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.tvos-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-x64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x86": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.browser-wasm": { + "kind": "Sdk", + "version": "${PackageVersionNet6}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.browser-wasm", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net6.browser-wasm" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.browser-wasm" + } + }, + "Microsoft.NETCore.App.Runtime.net6.win-x64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-x64" + } + }, + "Microsoft.NETCore.App.Runtime.net6.win-x86" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-x86" + } + }, + "Microsoft.NETCore.App.Runtime.net6.win-arm" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-arm" + } + }, + "Microsoft.NETCore.App.Runtime.net6.win-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet6}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-arm64" + } + } + } +} diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/WorkloadManifest.targets.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/WorkloadManifest.targets.in new file mode 100644 index 0000000000000000000000000000000000000000..f8217eaee8990a45a7be4e02c30f574f2eff477b --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/WorkloadManifest.targets.in @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_MonoWorkloadTargetsMobile>true + <_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersion6) + + + + + $(_MonoWorkloadRuntimePackPackageVersion) + + + diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.cs.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.cs.json new file mode 100644 index 0000000000000000000000000000000000000000..63f42875d04eb80086c064854af08b4f78f83013 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.cs.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Nástroje pro sestavení .NET WebAssembly" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.de.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.de.json new file mode 100644 index 0000000000000000000000000000000000000000..8e47a8ed518fe25d6b1b190b4044ae1e8565304d --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.de.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly-Buildtools" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.en.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.en.json new file mode 100644 index 0000000000000000000000000000000000000000..2b693d54c3fb53b57b1e8907979d763d727ddae9 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.en.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly build tools" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.es.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.es.json new file mode 100644 index 0000000000000000000000000000000000000000..5244945464f4a31b9e4db1f0a5b4e925b00978e3 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.es.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Herramientas de compilación de WebAssembly de .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.fr.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.fr.json new file mode 100644 index 0000000000000000000000000000000000000000..7492e913330dd71a1afb3a75c513d3928afe01f9 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.fr.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Outils de construction .NET WebAssembly" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.it.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.it.json new file mode 100644 index 0000000000000000000000000000000000000000..fbf5627f4c58028247db469821be8960aeab1ca7 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.it.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Strumenti di compilazione WebAssembly .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ja.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ja.json new file mode 100644 index 0000000000000000000000000000000000000000..e9e8b38a9ebb679b5088eb8068dad58e0644dcd6 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ja.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly ビルド ツール" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ko.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ko.json new file mode 100644 index 0000000000000000000000000000000000000000..788574ae8536d41e7428eae20a5afa5f3c9f85dd --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ko.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly 빌드 도구" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.pl.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.pl.json new file mode 100644 index 0000000000000000000000000000000000000000..90a04e1e219650f110bc92107dacdec869683bb5 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.pl.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Narzędzia kompilacji zestawu WebAssembly platformy .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.pt-BR.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.pt-BR.json new file mode 100644 index 0000000000000000000000000000000000000000..9869a7e82489bb4273e98e5bb1c1cd7e49c3368f --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.pt-BR.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Ferramentas de build do .NET WebAssembly" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ru.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ru.json new file mode 100644 index 0000000000000000000000000000000000000000..dae1bab0be634c498f9b986f50a188941d65a77c --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.ru.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": "Средства сборки WebAssembly .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.tr.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.tr.json new file mode 100644 index 0000000000000000000000000000000000000000..ec5dbdf0f5ead4dcf4fb6db6b02ebd2a51c31f82 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.tr.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly derleme araçları" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.zh-Hans.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.zh-Hans.json new file mode 100644 index 0000000000000000000000000000000000000000..849ab454aca627cede63da81f9b0f7873267fbce --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.zh-Hans.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly 生成工具" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.zh-Hant.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.zh-Hant.json new file mode 100644 index 0000000000000000000000000000000000000000..da192170661373a6326330bf0aff99e3310e2f98 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/localize/WorkloadManifest.zh-Hant.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools-net6/description": ".NET WebAssembly 組建工具" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest.pkgproj b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest.pkgproj new file mode 100644 index 0000000000000000000000000000000000000000..067e6c3f99e1217b38e3a619d689315e5e4965a3 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest.pkgproj @@ -0,0 +1,59 @@ + + + + + Internal toolchain package not meant for direct consumption. Please do not reference directly. + + + + + + Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest-$(SdkBandVersion) + + + + $(IntermediateOutputPath)WorkloadManifest.json + $(IntermediateOutputPath)WorkloadManifest.targets + + + + + + + + + + data/localize + + + + + + + + PackageVersion=$(PackageVersion); + + + + <_WorkloadManifestValues Include="WorkloadVersion" Value="$(PackageVersion)" /> + <_WorkloadManifestValues Include="PackageVersionNet7" Value="$(PackageVersionNet7)" /> + <_WorkloadManifestValues Include="EmscriptenVersion" Value="$(MicrosoftNETRuntimeEmscriptenVersion)" /> + <_WorkloadManifestValues Include="NetCoreAppCurrent" Value="$(NetCoreAppCurrent)" /> + + + + + + + + + + + diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.json.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.json.in new file mode 100644 index 0000000000000000000000000000000000000000..de062e613b417c0a5104c5a6f2540026f14de06b --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.json.in @@ -0,0 +1,484 @@ +{ + "version": "${WorkloadVersion}", + "depends-on": { + "Microsoft.NET.Workload.Emscripten.net7": "${EmscriptenVersion}" + }, + "workloads": { + "wasm-tools-net7": { + "description": ".NET WebAssembly build tools", + "packs": [ + "Microsoft.NET.Runtime.WebAssembly.Sdk.net7", + "Microsoft.NETCore.App.Runtime.Mono.net7.browser-wasm", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.browser-wasm" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net7", "microsoft-net-sdk-emscripten-net7" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "wasm-experimental-net7": { + "description": ".NET WebAssembly experimental tooling", + "packs": [ + "Microsoft.NET.Runtime.WebAssembly.Templates.net7", + "Microsoft.NETCore.App.Runtime.Mono.multithread.net7.browser-wasm", + "Microsoft.NETCore.App.Runtime.Mono.perftrace.net7.browser-wasm" + ], + "extends": [ "wasm-tools-net7" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "microsoft-net-runtime-android-net7": { + "abstract": true, + "description": "Android Mono Runtime", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm", + "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.android-x64", + "Microsoft.NETCore.App.Runtime.Mono.net7.android-x86" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net7" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "microsoft-net-runtime-android-aot-net7": { + "abstract": true, + "description": "Android Mono AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x86", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm64" + ], + "extends": [ "microsoft-net-runtime-android-net7" ], + "platforms": [ "win-x64", "linux-x64", "osx-x64", "osx-arm64" ] + }, + "microsoft-net-runtime-ios-net7": { + "abstract": true, + "description": "iOS Mono Runtime and AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x86" + ], + "extends": [ "runtimes-ios-net7" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-ios-net7": { + "abstract": true, + "description": "iOS Mono Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm", + "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x64", + "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x86" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net7" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "microsoft-net-runtime-maccatalyst-net7": { + "abstract": true, + "description": "MacCatalyst Mono Runtime and AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-x64" + ], + "extends": [ "runtimes-maccatalyst-net7" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-maccatalyst-net7": { + "abstract": true, + "description": "MacCatalyst Mono Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-x64" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net7" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "microsoft-net-runtime-macos-net7": { + "abstract": true, + "description": "MacOS CoreCLR and Mono Runtime Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net7.osx-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.osx-x64", + "Microsoft.NETCore.App.Runtime.osx-arm64", + "Microsoft.NETCore.App.Runtime.osx-x64" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net7" ], + "platforms": [ "osx-arm64", "osx-x64" ] + }, + "microsoft-net-runtime-tvos-net7": { + "abstract": true, + "description": "tvOS Mono Runtime and AOT Workload", + "packs": [ + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvos-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-arm64", + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-x64" + ], + "extends": [ "runtimes-tvos-net7" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-tvos-net7": { + "abstract": true, + "description": "tvOS Mono Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.Mono.net7.tvos-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-arm64", + "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-x64" + ], + "extends": [ "microsoft-net-runtime-mono-tooling-net7" ], + "platforms": [ "win-x64", "osx-arm64", "osx-x64" ] + }, + "runtimes-windows-net7": { + "description": "Windows Runtime Packs", + "packs": [ + "Microsoft.NETCore.App.Runtime.net7.win-x64", + "Microsoft.NETCore.App.Runtime.net7.win-x86", + "Microsoft.NETCore.App.Runtime.net7.win-arm", + "Microsoft.NETCore.App.Runtime.net7.win-arm64" + ] + }, + "microsoft-net-runtime-mono-tooling-net7": { + "abstract": true, + "description": "Shared native build tooling for Mono runtime", + "packs": [ + "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net7", + "Microsoft.NET.Runtime.MonoTargets.Sdk.net7" + ] + } + }, + "packs": { + "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net7": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NET.Runtime.MonoAOTCompiler.Task" + } + }, + "Microsoft.NET.Runtime.MonoTargets.Sdk.net7": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NET.Runtime.MonoTargets.Sdk" + } + }, + "Microsoft.NET.Runtime.WebAssembly.Sdk.net7": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NET.Runtime.WebAssembly.Sdk" + } + }, + "Microsoft.NET.Runtime.WebAssembly.Templates.net7": { + "kind": "template", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NET.Runtime.WebAssembly.Templates" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.android-x64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.android-x86": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.android-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x86": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-arm64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-x64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.osx-arm64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.osx-x64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.osx-x64" + } + }, + "Microsoft.NETCore.App.Runtime.net7.osx-arm64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.net7.osx-x64": { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.osx-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x86" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvos-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.tvos-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.tvos-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-x64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-arm64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x64": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x86": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86" + } + }, + "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.browser-wasm": { + "kind": "Sdk", + "version": "${PackageVersionNet7}", + "alias-to": { + "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm", + "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.browser-wasm", + "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm", + "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.net7.browser-wasm" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.browser-wasm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.multithread.net7.browser-wasm" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm" + } + }, + "Microsoft.NETCore.App.Runtime.Mono.perftrace.net7.browser-wasm" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.Mono.perftrace.browser-wasm" + } + }, + "Microsoft.NETCore.App.Runtime.net7.win-x64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-x64" + } + }, + "Microsoft.NETCore.App.Runtime.net7.win-x86" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-x86" + } + }, + "Microsoft.NETCore.App.Runtime.net7.win-arm" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-arm" + } + }, + "Microsoft.NETCore.App.Runtime.net7.win-arm64" : { + "kind": "framework", + "version": "${PackageVersionNet7}", + "alias-to": { + "any": "Microsoft.NETCore.App.Runtime.win-arm64" + } + } + } +} diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in new file mode 100644 index 0000000000000000000000000000000000000000..3fff0679fd80db9b87535b536b74e79e5de493ce --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_MonoWorkloadTargetsMobile>true + <_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersion7) + + + + + $(_MonoWorkloadRuntimePackPackageVersion) + + Microsoft.NETCore.App.Runtime.Mono.multithread.**RID** + Microsoft.NETCore.App.Runtime.Mono.perftrace.**RID** + + + diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.cs.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.cs.json new file mode 100644 index 0000000000000000000000000000000000000000..da1ee8979a0a7373f903e38ca25da24201ca18c1 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.cs.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Nástroje pro sestavení .NET WebAssembly" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.de.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.de.json new file mode 100644 index 0000000000000000000000000000000000000000..3d4467d7b055eb46e3e362aabe8cf071084962c4 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.de.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly-Buildtools" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.en.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.en.json new file mode 100644 index 0000000000000000000000000000000000000000..a6dcccedcf59ff8c7b7a02e4ab4f9e9c99df23ea --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.en.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly build tools" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.es.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.es.json new file mode 100644 index 0000000000000000000000000000000000000000..166e1db9fe8162838889235eeb609585d7f65bab --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.es.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Herramientas de compilación de WebAssembly de .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.fr.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.fr.json new file mode 100644 index 0000000000000000000000000000000000000000..e660e45a264dbe3ba14062f8c2ca4e160731347f --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.fr.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Outils de construction .NET WebAssembly" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.it.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.it.json new file mode 100644 index 0000000000000000000000000000000000000000..6703c0025606b4f0b6e7580b128e9edced753b1d --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.it.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Strumenti di compilazione WebAssembly .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ja.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ja.json new file mode 100644 index 0000000000000000000000000000000000000000..fd3fe984155ab5d3a44deb30db82e657c111e275 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ja.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly ビルド ツール" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ko.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ko.json new file mode 100644 index 0000000000000000000000000000000000000000..c5261248ff6092d661bb5fe2f17109642eb62b82 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ko.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly 빌드 도구" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.pl.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.pl.json new file mode 100644 index 0000000000000000000000000000000000000000..858653c73b527a2cd5822ad78e2dfa2936ba5c1d --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.pl.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Narzędzia kompilacji zestawu WebAssembly platformy .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.pt-BR.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.pt-BR.json new file mode 100644 index 0000000000000000000000000000000000000000..a8dceaf324f2cb2aeaf418b58dc9e079cc268f5c --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.pt-BR.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Ferramentas de build do .NET WebAssembly" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ru.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ru.json new file mode 100644 index 0000000000000000000000000000000000000000..102e67acdc2c216d61166cb8372f29757b70497e --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.ru.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": "Средства сборки WebAssembly .NET" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.tr.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.tr.json new file mode 100644 index 0000000000000000000000000000000000000000..34d4e3b66de92e9fbf6aaeb4027f18465bc2df22 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.tr.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly derleme araçları" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.zh-Hans.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.zh-Hans.json new file mode 100644 index 0000000000000000000000000000000000000000..360e1e5a5d1f03d8e1384faf8e1fd9f4f08985f3 --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.zh-Hans.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly 生成工具" +} \ No newline at end of file diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.zh-Hant.json b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.zh-Hant.json new file mode 100644 index 0000000000000000000000000000000000000000..c5d85ecc0f5c041fbedd30fde8ea8ddf3876b0dd --- /dev/null +++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/localize/WorkloadManifest.zh-Hant.json @@ -0,0 +1,3 @@ +{ + "workloads/wasm-tools/description": ".NET WebAssembly 組建工具" +} \ No newline at end of file diff --git a/src/mono/nuget/mono-packages.proj b/src/mono/nuget/mono-packages.proj index 1c1c7c0bff9e3f6295bbbc2a379558c1614aa611..44ebab468a54339d0ee8cc5ea6133a6f14b9aa3c 100644 --- a/src/mono/nuget/mono-packages.proj +++ b/src/mono/nuget/mono-packages.proj @@ -16,6 +16,8 @@ + + diff --git a/src/mono/wasm/Wasm.Build.Tests/BlazorWasmTests.cs b/src/mono/wasm/Wasm.Build.Tests/BlazorWasmTests.cs index 1641c7860d5b676c48b4654a71a3978f7a449af7..cfb725bd59f22a5a8f6152b5e45e9690f707bb87 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BlazorWasmTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BlazorWasmTests.cs @@ -80,6 +80,7 @@ public void Net50Projects_NativeReference(string config) { "Release", /*aot*/ false, /*expectError*/ false } }; + // FIXME: test for WasmBuildNative=true? [Theory] [MemberData(nameof(Net50TestData))] public void Net50Projects_AOT(string config, bool aot, bool expectError) diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildEnvironment.cs b/src/mono/wasm/Wasm.Build.Tests/BuildEnvironment.cs index c119db17c282cf53f7f3d3bad7f9d47f359f0bd9..d8ec1e5005b5d73c48c993f7d3e0150ef14caaca 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildEnvironment.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildEnvironment.cs @@ -14,22 +14,22 @@ namespace Wasm.Build.Tests public class BuildEnvironment { public string DotNet { get; init; } - public string RuntimePackDir { get; init; } - public string WorkloadPacksVersion { get; init; } public bool IsWorkload { get; init; } public string DefaultBuildArgs { get; init; } public IDictionary EnvVars { get; init; } public string DirectoryBuildPropsContents { get; init; } public string DirectoryBuildTargetsContents { get; init; } - public string RuntimeNativeDir { get; init; } public string LogRootPath { get; init; } public string WorkloadPacksDir { get; init; } + public string BuiltNuGetsPath { get; init; } public static readonly string RelativeTestAssetsPath = @"..\testassets\"; public static readonly string TestAssetsPath = Path.Combine(AppContext.BaseDirectory, "testassets"); public static readonly string TestDataPath = Path.Combine(AppContext.BaseDirectory, "data"); + private static readonly Dictionary s_runtimePackVersions = new(); + public BuildEnvironment() { DirectoryInfo? solutionRoot = new (AppContext.BaseDirectory); @@ -51,7 +51,7 @@ public BuildEnvironment() "..", "..", "..", - "dotnet-workload"); + "dotnet-net7+latest"); if (Directory.Exists(probePath)) sdkForWorkloadPath = Path.GetFullPath(probePath); else @@ -60,21 +60,20 @@ public BuildEnvironment() if (!Directory.Exists(sdkForWorkloadPath)) throw new Exception($"Could not find SDK_FOR_WORKLOAD_TESTING_PATH={sdkForWorkloadPath}"); - if (!Path.IsPathRooted(sdkForWorkloadPath)) - sdkForWorkloadPath = Path.GetFullPath(sdkForWorkloadPath); + sdkForWorkloadPath = Path.GetFullPath(sdkForWorkloadPath); + // FIXME: + foreach (string verStr in new[] { "8", "7", "6" }) + { + string versionValue = Environment.GetEnvironmentVariable($"RUNTIME_PACK_VER{verStr}") ?? string.Empty; + s_runtimePackVersions[$"net{verStr}.0"] = versionValue; + } + + WorkloadPacksDir = Path.Combine(sdkForWorkloadPath, "packs"); EnvVars = new Dictionary(); bool workloadInstalled = EnvironmentVariables.SdkHasWorkloadInstalled != null && EnvironmentVariables.SdkHasWorkloadInstalled == "true"; if (workloadInstalled) { - var workloadPacksVersion = EnvironmentVariables.WorkloadPacksVersion; - if (string.IsNullOrEmpty(workloadPacksVersion)) - throw new Exception($"Cannot test with workloads without WORKLOAD_PACKS_VER environment variable being set"); - - WorkloadPacksDir = Path.Combine(sdkForWorkloadPath, "packs"); - WorkloadPacksVersion = workloadPacksVersion; - - RuntimePackDir = Path.Combine(WorkloadPacksDir, "Microsoft.NETCore.App.Runtime.Mono.browser-wasm", WorkloadPacksVersion); DirectoryBuildPropsContents = s_directoryBuildPropsForWorkloads; DirectoryBuildTargetsContents = s_directoryBuildTargetsForWorkloads; @@ -87,9 +86,6 @@ public BuildEnvironment() } else { - WorkloadPacksDir = "/dont-use-this-no-workload-installed"; - WorkloadPacksVersion = "dont-use-this-no-workload-installed"; - RuntimePackDir = "/dont-check-runtime-pack-dir-for-no-workloads-case"; var appRefDir = EnvironmentVariables.AppRefDir; if (string.IsNullOrEmpty(appRefDir)) throw new Exception($"Cannot test with workloads without AppRefDir environment variable being set"); @@ -99,6 +95,11 @@ public BuildEnvironment() DirectoryBuildTargetsContents = s_directoryBuildTargetsForLocal; } + if (EnvironmentVariables.BuiltNuGetsPath is null || !Directory.Exists(EnvironmentVariables.BuiltNuGetsPath)) + throw new Exception($"Cannot find 'BUILT_NUGETS_PATH={EnvironmentVariables.BuiltNuGetsPath}'"); + + BuiltNuGetsPath = EnvironmentVariables.BuiltNuGetsPath; + // `runtime` repo's build environment sets these, and they // mess up the build for the test project, which is using a different // dotnet @@ -112,20 +113,25 @@ public BuildEnvironment() // helps with debugging EnvVars["WasmNativeStrip"] = "false"; + // Works around an issue in msbuild due to which + // second, and subsequent builds fail without any details + // in the logs + EnvVars["DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER"] = "1"; + DefaultBuildArgs += " /nr:false"; + if (OperatingSystem.IsWindows()) { EnvVars["WasmCachePath"] = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".emscripten-cache"); } - RuntimeNativeDir = Path.Combine(RuntimePackDir, "runtimes", "browser-wasm", "native"); DotNet = Path.Combine(sdkForWorkloadPath!, "dotnet"); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) DotNet += ".exe"; if (!string.IsNullOrEmpty(EnvironmentVariables.TestLogPath)) { - LogRootPath = EnvironmentVariables.TestLogPath; + LogRootPath = Path.GetFullPath(EnvironmentVariables.TestLogPath); if (!Directory.Exists(LogRootPath)) { Directory.CreateDirectory(LogRootPath); @@ -137,6 +143,13 @@ public BuildEnvironment() } } + // FIXME: error checks + public string GetRuntimePackVersion(string tfm = BuildTestBase.DefaultTargetFramework) => s_runtimePackVersions[tfm]; + public string GetRuntimePackDir(string tfm = BuildTestBase.DefaultTargetFramework) + => Path.Combine(WorkloadPacksDir, "Microsoft.NETCore.App.Runtime.Mono.browser-wasm", GetRuntimePackVersion(tfm)); + public string GetRuntimeNativeDir(string tfm = BuildTestBase.DefaultTargetFramework) + => Path.Combine(GetRuntimePackDir(tfm), "runtimes", "browser-wasm", "native"); + protected static string s_directoryBuildPropsForWorkloads = File.ReadAllText(Path.Combine(TestDataPath, "Workloads.Directory.Build.props")); protected static string s_directoryBuildTargetsForWorkloads = File.ReadAllText(Path.Combine(TestDataPath, "Workloads.Directory.Build.targets")); diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index bba739eee756a6afde665097e4294b6982e08076..e34917b222624ff359b484efddef653a780f535c 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -40,7 +40,8 @@ public abstract class BuildTestBase : IClassFixture"); + } + public string CreateWasmTemplateProject(string id, string template = "wasmbrowser") { InitPaths(id); @@ -440,6 +456,9 @@ public string CreateWasmTemplateProject(string id, string template = "wasmbrowse + + + """); @@ -501,6 +520,7 @@ public string CreateBlazorWasmTemplateProject(string id) $"-bl:{logPath}", $"-p:Configuration={config}", "-p:BlazorEnableCompression=false", + "-nr:false", setWasmDevel ? "-p:_WasmDevel=true" : string.Empty }.Concat(extraArgs).ToArray(); @@ -520,7 +540,7 @@ protected void AssertDotNetNativeFiles(NativeFilesType type, string config, bool string srcDir = type switch { - NativeFilesType.FromRuntimePack => s_buildEnv.RuntimeNativeDir, + NativeFilesType.FromRuntimePack => s_buildEnv.GetRuntimeNativeDir(targetFramework), NativeFilesType.Relinked => objBuildDir, NativeFilesType.AOT => objBuildDir, _ => throw new ArgumentOutOfRangeException(nameof(type)) @@ -540,23 +560,24 @@ protected void AssertDotNetNativeFiles(NativeFilesType type, string config, bool if (type != NativeFilesType.FromRuntimePack) { // check that the files are *not* from runtime pack - AssertNotSameFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.wasm"), Path.Combine(binFrameworkDir, "dotnet.wasm"), label); - AssertNotSameFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.js"), dotnetJsPath!, label); + AssertNotSameFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.wasm"), Path.Combine(binFrameworkDir, "dotnet.wasm"), label); + AssertNotSameFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.js"), dotnetJsPath!, label); } } - static void AssertRuntimePackPath(string buildOutput) + static void AssertRuntimePackPath(string buildOutput, string targetFramework) { var match = s_runtimePackPathRegex.Match(buildOutput); if (!match.Success || match.Groups.Count != 2) throw new XunitException($"Could not find the pattern in the build output: '{s_runtimePackPathPattern}'.{Environment.NewLine}Build output: {buildOutput}"); + string expectedRuntimePackDir = s_buildEnv.GetRuntimePackDir(targetFramework); string actualPath = match.Groups[1].Value; - if (string.Compare(actualPath, s_buildEnv.RuntimePackDir) != 0) - throw new XunitException($"Runtime pack path doesn't match.{Environment.NewLine}Expected: {s_buildEnv.RuntimePackDir}{Environment.NewLine}Actual: {actualPath}"); + if (string.Compare(actualPath, expectedRuntimePackDir) != 0) + throw new XunitException($"Runtime pack path doesn't match.{Environment.NewLine}Expected: '{expectedRuntimePackDir}'{Environment.NewLine}Actual: '{actualPath}'"); } - protected static void AssertBasicAppBundle(string bundleDir, string projectName, string config, string mainJS, bool hasV8Script, bool hasIcudt=true, bool dotnetWasmFromRuntimePack=true) + protected static void AssertBasicAppBundle(string bundleDir, string projectName, string config, string mainJS, bool hasV8Script, bool hasIcudt=true, bool dotnetWasmFromRuntimePack=true, string targetFramework=DefaultTargetFramework) { AssertFilesExist(bundleDir, new [] { @@ -588,24 +609,24 @@ protected static void AssertBasicAppBundle(string bundleDir, string projectName, //} } - AssertDotNetWasmJs(bundleDir, fromRuntimePack: dotnetWasmFromRuntimePack); + AssertDotNetWasmJs(bundleDir, fromRuntimePack: dotnetWasmFromRuntimePack, targetFramework); } - protected static void AssertDotNetWasmJs(string bundleDir, bool fromRuntimePack) + protected static void AssertDotNetWasmJs(string bundleDir, bool fromRuntimePack, string targetFramework) { - AssertFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.wasm"), + AssertFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.wasm"), Path.Combine(bundleDir, "dotnet.wasm"), "Expected dotnet.wasm to be same as the runtime pack", same: fromRuntimePack); - AssertFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.js"), + AssertFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.js"), Path.Combine(bundleDir, "dotnet.js"), "Expected dotnet.js to be same as the runtime pack", same: fromRuntimePack); } - protected static void AssertDotNetJsSymbols(string bundleDir, bool fromRuntimePack) - => AssertFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.js.symbols"), + protected static void AssertDotNetJsSymbols(string bundleDir, bool fromRuntimePack, string targetFramework=DefaultTargetFramework) + => AssertFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.js.symbols"), Path.Combine(bundleDir, "dotnet.js.symbols"), same: fromRuntimePack); @@ -656,12 +677,12 @@ protected static void AssertFile(string file0, string file1, string? label=null, return result; } - protected void AssertBlazorBundle(string config, bool isPublish, bool dotnetWasmFromRuntimePack, string? binFrameworkDir=null) + protected void AssertBlazorBundle(string config, bool isPublish, bool dotnetWasmFromRuntimePack, string? binFrameworkDir=null, string targetFramework=DefaultTargetFramework) { binFrameworkDir ??= FindBlazorBinFrameworkDir(config, isPublish); AssertBlazorBootJson(config, isPublish, binFrameworkDir: binFrameworkDir); - AssertFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.wasm"), + AssertFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.wasm"), Path.Combine(binFrameworkDir, "dotnet.wasm"), "Expected dotnet.wasm to be same as the runtime pack", same: dotnetWasmFromRuntimePack); @@ -669,7 +690,7 @@ protected void AssertBlazorBundle(string config, bool isPublish, bool dotnetWasm string? dotnetJsPath = Directory.EnumerateFiles(binFrameworkDir, "dotnet.*.js").FirstOrDefault(); Assert.True(dotnetJsPath != null, $"Could not find blazor's dotnet*js in {binFrameworkDir}"); - AssertFile(Path.Combine(s_buildEnv.RuntimeNativeDir, "dotnet.js"), + AssertFile(Path.Combine(s_buildEnv.GetRuntimeNativeDir(targetFramework), "dotnet.js"), dotnetJsPath!, "Expected dotnet.js to be same as the runtime pack", same: dotnetWasmFromRuntimePack); @@ -854,6 +875,8 @@ void LogData(string label, string? message) } outputBuilder.AppendLine($"{label} {message}"); } + if (EnvironmentVariables.ShowBuildOutput) + Console.WriteLine($"{label} {message}"); } } diff --git a/src/mono/wasm/Wasm.Build.Tests/EnvironmentVariables.cs b/src/mono/wasm/Wasm.Build.Tests/EnvironmentVariables.cs index ff3d5d565ae5433331657ca96cb6af069a6774b7..a1dcabaebddc76411c010c7b9588e66ecd79e628 100644 --- a/src/mono/wasm/Wasm.Build.Tests/EnvironmentVariables.cs +++ b/src/mono/wasm/Wasm.Build.Tests/EnvironmentVariables.cs @@ -16,6 +16,8 @@ internal static class EnvironmentVariables internal static readonly string? TestLogPath = Environment.GetEnvironmentVariable("TEST_LOG_PATH"); internal static readonly string? SkipProjectCleanup = Environment.GetEnvironmentVariable("SKIP_PROJECT_CLEANUP"); internal static readonly string? XHarnessCliPath = Environment.GetEnvironmentVariable("XHARNESS_CLI_PATH"); + internal static readonly string? BuiltNuGetsPath = Environment.GetEnvironmentVariable("BUILT_NUGETS_PATH"); internal static readonly string? BrowserPathForTests = Environment.GetEnvironmentVariable("BROWSER_PATH_FOR_TESTS"); + internal static readonly bool ShowBuildOutput = Environment.GetEnvironmentVariable("SHOW_BUILD_OUTPUT") is not null; } } diff --git a/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs b/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs index 3d4aee4ae158217e795e92af210fdcb2799b172a..0d7d58b8c24d2eb9a420292bb96aec30262ac1b4 100644 --- a/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs @@ -463,7 +463,7 @@ public static void Main() projectCode = projectCode .Replace("###WasmPInvokeModule###", AddAssembly("System.Private.CoreLib") + AddAssembly("System.Runtime") + AddAssembly(libraryBuildArgs.ProjectName)) - .Replace("###WasmAppBuilder###", Path.Combine(s_buildEnv.WorkloadPacksDir, "Microsoft.NET.Runtime.WebAssembly.Sdk", s_buildEnv.WorkloadPacksVersion, "tasks", DefaultTargetFramework, "WasmAppBuilder.dll")); + .Replace("###WasmAppBuilder###", Path.Combine(s_buildEnv.WorkloadPacksDir, "Microsoft.NET.Runtime.WebAssembly.Sdk", s_buildEnv.GetRuntimePackVersion(), "tasks", DefaultTargetFramework, "WasmAppBuilder.dll")); buildArgs = buildArgs with { ProjectName = $"icall_enum_{buildArgs.Config}_{id}", ProjectFileContents = projectCode }; diff --git a/src/mono/wasm/Wasm.Build.Tests/README.md b/src/mono/wasm/Wasm.Build.Tests/README.md index 60d8dced9b81e26411f5787cfee7caaae2550975..b1cba57976007b3610eb4582d77d42aa1b883c59 100644 --- a/src/mono/wasm/Wasm.Build.Tests/README.md +++ b/src/mono/wasm/Wasm.Build.Tests/README.md @@ -38,7 +38,7 @@ For this, the builds get cached using `BuildArgs` as the key. - when running locally, the default is to test with workloads. For this, sdk with `$(SdkVersionForWorkloadTesting)` is installed in - `artifacts/bin/dotnet-workload`. And the workload packs are installed there + `artifacts/bin/dotnet-latest`. And the workload packs are installed there using packages in `artifacts/packages/$(Configuration)/Shipping`. - If the packages get updated, then the workload will get installed again. @@ -53,3 +53,7 @@ For this, the builds get cached using `BuildArgs` as the key. - Each test gets a randomly generated "id". This `id` can be used to find the binlogs, or the test directories. + +## Useful environment variables + +- `SHOW_BUILD_OUTPUT` - will show the build output to the console diff --git a/src/mono/wasm/Wasm.Build.Tests/ToolCommand.cs b/src/mono/wasm/Wasm.Build.Tests/ToolCommand.cs index 642b190666d2b697c4b4cfb2ed8e9de45ded23e7..8526f0d63b551c6fefb66341c31a0c6515050db9 100644 --- a/src/mono/wasm/Wasm.Build.Tests/ToolCommand.cs +++ b/src/mono/wasm/Wasm.Build.Tests/ToolCommand.cs @@ -112,8 +112,11 @@ private async Task ExecuteAsyncInternal(string executable, string if (e.Data == null) return; - output.Add($"[{_label}] {e.Data}"); - _testOutput.WriteLine($"[{_label}] {e.Data}"); + string msg = $"[{_label}] {e.Data}"; + output.Add(msg); + _testOutput.WriteLine(msg); + if (EnvironmentVariables.ShowBuildOutput) + Console.WriteLine(msg); ErrorDataReceived?.Invoke(s, e); }; @@ -122,8 +125,11 @@ private async Task ExecuteAsyncInternal(string executable, string if (e.Data == null) return; - output.Add($"[{_label}] {e.Data}"); - _testOutput.WriteLine($"[{_label}] {e.Data}"); + string msg = $"[{_label}] {e.Data}"; + output.Add(msg); + _testOutput.WriteLine(msg); + if (EnvironmentVariables.ShowBuildOutput) + Console.WriteLine(msg); OutputDataReceived?.Invoke(s, e); }; diff --git a/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj b/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj index 45116c2db286b471ca56847cf61ac7654f5e7c3b..3941d5dfca1e261b40eabe13c6040321ec8d9210 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj +++ b/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj @@ -60,6 +60,7 @@ <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' == 'true'">-notrait category=no-workload <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' != 'true'">-trait category=no-workload + @@ -69,9 +70,19 @@ + + + + <_RuntimePackVersions Include="$(PackageVersion)" EnvVarName="RUNTIME_PACK_VER8" /> + <_RuntimePackVersions Include="$(PackageVersionNet7)" EnvVarName="RUNTIME_PACK_VER7" /> + <_RuntimePackVersions Include="$(PackageVersionNet6)" EnvVarName="RUNTIME_PACK_VER6" /> + + + + diff --git a/src/mono/wasm/Wasm.Build.Tests/WasmTemplateTests.cs b/src/mono/wasm/Wasm.Build.Tests/WasmTemplateTests.cs index 5b41e3a1b030213be07cb084c382b2dfccafe6c4..1780f1dae5385edd1576c87d5e490e62beba0b59 100644 --- a/src/mono/wasm/Wasm.Build.Tests/WasmTemplateTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/WasmTemplateTests.cs @@ -36,12 +36,16 @@ private void updateProgramCS() File.WriteAllText(path, text); } - private void UpdateBrowserMainJs() + private void UpdateBrowserMainJs(string targetFramework) { string mainJsPath = Path.Combine(_projectDir!, "main.js"); string mainJsContent = File.ReadAllText(mainJsPath); - mainJsContent = mainJsContent.Replace(".create()", ".withConsoleForwarding().withElementOnExit().withExitCodeLogging().withExitOnUnhandledError().create()"); + // .withExitOnUnhandledError() is available only only >net7.0 + mainJsContent = mainJsContent.Replace(".create()", + targetFramework == "net8.0" + ? ".withConsoleForwarding().withElementOnExit().withExitCodeLogging().withExitOnUnhandledError().create()" + : ".withConsoleForwarding().withElementOnExit().withExitCodeLogging().create()"); File.WriteAllText(mainJsPath, mainJsContent); } @@ -83,7 +87,7 @@ public void BrowserBuildThenPublish(string config) string projectFile = CreateWasmTemplateProject(id, "wasmbrowser"); string projectName = Path.GetFileNameWithoutExtension(projectFile); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); var buildArgs = new BuildArgs(projectName, config, false, id, null); buildArgs = ExpandBuildArgs(buildArgs); @@ -96,7 +100,7 @@ public void BrowserBuildThenPublish(string config) HasV8Script: false, MainJS: "main.js", Publish: false, - TargetFramework: "net7.0" + TargetFramework: BuildTestBase.DefaultTargetFramework )); AssertDotNetJsSymbols(Path.Combine(GetBinDir(config), "AppBundle"), fromRuntimePack: true); @@ -106,7 +110,6 @@ public void BrowserBuildThenPublish(string config) File.Move(product!.LogFile, Path.ChangeExtension(product.LogFile!, ".first.binlog")); - _testOutput.WriteLine($"{Environment.NewLine}Publishing with no changes ..{Environment.NewLine}"); _testOutput.WriteLine($"{Environment.NewLine}Publishing with no changes ..{Environment.NewLine}"); bool expectRelinking = config == "Release"; @@ -118,7 +121,7 @@ public void BrowserBuildThenPublish(string config) HasV8Script: false, MainJS: "main.js", Publish: true, - TargetFramework: "net7.0", + TargetFramework: BuildTestBase.DefaultTargetFramework, UseCache: false)); AssertDotNetJsSymbols(Path.Combine(GetBinDir(config), "AppBundle"), fromRuntimePack: !expectRelinking); @@ -146,7 +149,7 @@ public void ConsoleBuildThenPublish(string config) HasV8Script: false, MainJS: "main.mjs", Publish: false, - TargetFramework: "net7.0" + TargetFramework: BuildTestBase.DefaultTargetFramework )); AssertDotNetJsSymbols(Path.Combine(GetBinDir(config), "AppBundle"), fromRuntimePack: true); @@ -171,7 +174,7 @@ public void ConsoleBuildThenPublish(string config) HasV8Script: false, MainJS: "main.mjs", Publish: true, - TargetFramework: "net7.0", + TargetFramework: BuildTestBase.DefaultTargetFramework, UseCache: false)); AssertDotNetJsSymbols(Path.Combine(GetBinDir(config), "AppBundle"), fromRuntimePack: !expectRelinking); @@ -204,7 +207,7 @@ public void ConsoleBuildAndRun(string config, bool relinking) HasV8Script: false, MainJS: "main.mjs", Publish: false, - TargetFramework: "net7.0" + TargetFramework: BuildTestBase.DefaultTargetFramework )); AssertDotNetJsSymbols(Path.Combine(GetBinDir(config), "AppBundle"), fromRuntimePack: !relinking); @@ -268,7 +271,7 @@ public void ConsolePublishAndRun(string config, bool aot, bool relinking) HasV8Script: false, MainJS: "main.mjs", Publish: true, - TargetFramework: "net7.0", + TargetFramework: BuildTestBase.DefaultTargetFramework, UseCache: false)); if (!aot) @@ -301,10 +304,6 @@ public async Task BlazorRunTest() string config = "Debug"; string id = $"blazor_{config}_{Path.GetRandomFileName()}"; string projectFile = CreateWasmTemplateProject(id, "blazorwasm"); - // string projectName = Path.GetFileNameWithoutExtension(projectFile); - - // var buildArgs = new BuildArgs(projectName, config, false, id, null); - // buildArgs = ExpandBuildArgs(buildArgs); new DotNetCommand(s_buildEnv, _testOutput) .WithWorkingDirectory(_projectDir!) @@ -333,10 +332,7 @@ public async Task BrowserTest() string id = $"browser_{config}_{Path.GetRandomFileName()}"; CreateWasmTemplateProject(id, "wasmbrowser"); - // var buildArgs = new BuildArgs(projectName, config, false, id, null); - // buildArgs = ExpandBuildArgs(buildArgs); - - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); new DotNetCommand(s_buildEnv, _testOutput) .WithWorkingDirectory(_projectDir!) diff --git a/src/mono/wasm/Wasm.Build.Tests/WorkloadTests.cs b/src/mono/wasm/Wasm.Build.Tests/WorkloadTests.cs deleted file mode 100644 index 55df68a8987b9bb5625c0ad6d2e381e5da93f0eb..0000000000000000000000000000000000000000 --- a/src/mono/wasm/Wasm.Build.Tests/WorkloadTests.cs +++ /dev/null @@ -1,119 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Xml; -using System.Xml.Serialization; -using Xunit; -using Xunit.Abstractions; -using Xunit.Sdk; - -#nullable enable - -namespace Wasm.Build.Tests -{ - public class WorkloadTests : BuildTestBase - { - public WorkloadTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) - : base(output, buildContext) - { - } - - [Fact] - [SkipOnPlatform(TestPlatforms.Windows, "Not applicable on windows")] - public void FilesInUnixFilesPermissionsXmlExist() - { - // not doing any project generation here - _enablePerTestCleanup = false; - - // find all the UnixFilePermissions .. - string packsDir = Path.Combine(Path.GetDirectoryName(s_buildEnv.DotNet)!, "packs"); - Assert.True(Directory.Exists(packsDir), $"Could not find packs directory {packsDir}"); - - var unixPermFiles = Directory.EnumerateFiles(packsDir, "UnixFilePermissions.xml", new EnumerationOptions { RecurseSubdirectories = true }); - foreach (string unixPermFile in unixPermFiles) - { - Assert.True(File.Exists(unixPermFile), $"Could not find {unixPermFile}"); - FileList? list = FileList.Deserialize(unixPermFile); - if (list == null) - throw new Exception($"Could not read unix permissions file {unixPermFile}"); - - // File is in ///data/UnixFilePermissions.xml - // and - string thisPackDir = Path.Combine(Path.GetDirectoryName(unixPermFile)!, ".."); - foreach (FileListFile flf in list.File) - { - if (flf.Path == null) - throw new Exception($"Path for FileListFile should not be null. xml: {unixPermFile}"); - - var targetFile = Path.Combine(thisPackDir, flf.Path); - Assert.True(File.Exists(targetFile), $"Expected file {targetFile} to exist in the pack, as it is referenced in {unixPermFile}"); - } - } - - // We don't install the cross compiler pack from nupkg, so we don't - // have the unixFilePermissions for that - // Expect just the emscripten ones here for now - - // linux doesn't have Emscripten.Python package, so only 2 there - int expectedPermFileCount = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? 3 : 4; - - int permFileCount = unixPermFiles.Count(); - if (permFileCount != expectedPermFileCount) - throw new XunitException($"Expected to find 3 UnixFilePermissions.xml files, but got {permFileCount}." - + $"{Environment.NewLine}Files: {string.Join(", ", unixPermFiles)}"); - } - } - - [Serializable] - [XmlType(AnonymousType = true)] - [XmlRoot(Namespace = "", IsNullable = false)] - public class FileList - { - private FileListFile[]? fileField; - - [XmlElement("File")] - public FileListFile[] File - { - get => fileField ?? Array.Empty(); - set => fileField = value; - } - - public static FileList? Deserialize(string pathToXml) - { - var serializer = new XmlSerializer(typeof(FileList)); - - using var fs = new FileStream(pathToXml, FileMode.Open, FileAccess.Read); - var reader = XmlReader.Create(fs); - FileList? fileList = (FileList?)serializer.Deserialize(reader); - return fileList; - } - } - - // From https://github.com/dotnet/sdk/blob/main/src/Cli/dotnet/NugetPackageDownloader/WorkloadUnixFilePermissionsFileList.cs - [Serializable] - [XmlType(AnonymousType = true)] - public class FileListFile - { - private string? pathField; - - private string? permissionField; - - [XmlAttribute] - public string? Path - { - get => pathField; - set => pathField = value; - } - - [XmlAttribute] - public string? Permission - { - get => permissionField; - set => permissionField = value; - } - } -} diff --git a/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Directory.Build.targets b/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Directory.Build.targets index 5557a97f375ccae8d4f6c4ba4d0e288a41e192c1..fb789e693622aa24f0adb1dd81dfd469f81ea541 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Directory.Build.targets +++ b/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Directory.Build.targets @@ -1,75 +1,9 @@ - - Microsoft.NETCore.App - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_targetingPackReferenceExclusion Include="$(TargetName)" /> - <_targetingPackReferenceExclusion Include="@(_ResolvedProjectReferencePaths->'%(Filename)')" /> - <_targetingPackReferenceExclusion Include="@(DefaultReferenceExclusion)" /> - - - - <_targetingPackReferenceWithExclusion Include="@(Reference)"> - %(_targetingPackReferenceExclusion.Identity) - - - + + diff --git a/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.targets b/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.targets index 18ef74cead43c5d30df7327efa9d141e54a23d2a..6f9b3ab9ef99947574deb91cf1b0738c11bc86e5 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.targets +++ b/src/mono/wasm/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.targets @@ -1,25 +1,5 @@ - - - - - - - - - - - + + diff --git a/src/mono/wasm/Wasm.Build.Tests/data/Local.Directory.Build.targets b/src/mono/wasm/Wasm.Build.Tests/data/Local.Directory.Build.targets index 51d7fe87e19760f58e97867416b7810d296c61e5..30a0e74e4f3fe89279bb281446eb836ab639ab96 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/Local.Directory.Build.targets +++ b/src/mono/wasm/Wasm.Build.Tests/data/Local.Directory.Build.targets @@ -4,6 +4,6 @@ - + diff --git a/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.cmd b/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.cmd index 464d95e36c7ea9fee891dc4583edc1e2f36035cb..7f5b65bee18f70c01a446612148363ea5fe27231 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.cmd +++ b/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.cmd @@ -94,10 +94,10 @@ exit /b %EXIT_CODE% REM Functions :SetEnvVars if [%TEST_USING_WORKLOADS%] == [true] ( - set _DIR_NAME=dotnet-workload + set _DIR_NAME=dotnet-net7+latest set SDK_HAS_WORKLOAD_INSTALLED=true ) else ( - set _DIR_NAME=sdk-no-workload + set _DIR_NAME=dotnet-none set SDK_HAS_WORKLOAD_INSTALLED=false ) diff --git a/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.sh b/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.sh index 67ffeabba709ef9c7b7e77e71d083c02e225a2bb..be117f006390948daec687b2d508a60041f3570b 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.sh +++ b/src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.sh @@ -68,10 +68,10 @@ function set_env_vars() { local _DIR_NAME= if [ "x$TEST_USING_WORKLOADS" = "xtrue" ]; then - _DIR_NAME=dotnet-workload + _DIR_NAME=dotnet-net7+latest export SDK_HAS_WORKLOAD_INSTALLED=true else - _DIR_NAME=sdk-no-workload + _DIR_NAME=dotnet-none export SDK_HAS_WORKLOAD_INSTALLED=false fi diff --git a/src/mono/wasm/Wasm.Build.Tests/data/Workloads.Directory.Build.targets b/src/mono/wasm/Wasm.Build.Tests/data/Workloads.Directory.Build.targets index 2274fe83598bf262eea278497c1e7c76bdbdfa1b..fb789e693622aa24f0adb1dd81dfd469f81ea541 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/Workloads.Directory.Build.targets +++ b/src/mono/wasm/Wasm.Build.Tests/data/Workloads.Directory.Build.targets @@ -3,77 +3,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_targetingPackReferenceExclusion Include="$(TargetName)" /> - <_targetingPackReferenceExclusion Include="@(_ResolvedProjectReferencePaths->'%(Filename)')" /> - <_targetingPackReferenceExclusion Include="@(DefaultReferenceExclusion)" /> - - - - <_targetingPackReferenceWithExclusion Include="@(Reference)"> - %(_targetingPackReferenceExclusion.Identity) - - - + + diff --git a/src/mono/wasm/Wasm.Build.Tests/data/nuget7.config b/src/mono/wasm/Wasm.Build.Tests/data/nuget7.config index d6de05ad43dddc6e7c0be90c539233d91de3d708..e7ad45f78b8cabb5308007246ee30fed4772b8e5 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/nuget7.config +++ b/src/mono/wasm/Wasm.Build.Tests/data/nuget7.config @@ -7,6 +7,7 @@ + diff --git a/src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js b/src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js new file mode 100644 index 0000000000000000000000000000000000000000..bac3f856160c57343f7879cf8d4c00289d93b970 --- /dev/null +++ b/src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js @@ -0,0 +1,345 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// -*- mode: js; js-indent-level: 4; -*- +// +// Run runtime tests under a JS shell or a browser +// +"use strict"; + + +/***************************************************************************** + * Please don't use this as template for startup code. + * There are simpler and better samples like src\mono\sample\wasm\browser\main.js + * This one is not ES6 nor CJS, doesn't use top level await and has edge case polyfills. + * It handles strange things which happen with XHarness. + ****************************************************************************/ + + +//glue code to deal with the differences between chrome, ch, d8, jsc and sm. +const is_browser = typeof window != "undefined"; +const is_node = !is_browser && typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; + +if (is_node && process.versions.node.split(".")[0] < 14) { + throw new Error(`NodeJS at '${process.execPath}' has too low version '${process.versions.node}'`); +} + +if (typeof globalThis.crypto === 'undefined') { + // **NOTE** this is a simple insecure polyfill for testing purposes only + // /dev/random doesn't work on js shells, so define our own + // See library_fs.js:createDefaultDevices () + globalThis.crypto = { + getRandomValues: function (buffer) { + for (let i = 0; i < buffer.length; i++) + buffer[i] = (Math.random() * 256) | 0; + } + } +} + +let v8args; +if (typeof arguments !== "undefined") { + // this must be captured in top level scope in V8 + v8args = arguments; +} + +async function getArgs() { + let queryArguments = []; + if (is_node) { + queryArguments = process.argv.slice(2); + } else if (is_browser) { + // We expect to be run by tests/runtime/run.js which passes in the arguments using http parameters + const url = new URL(decodeURI(window.location)); + let urlArguments = [] + for (let param of url.searchParams) { + if (param[0] == "arg") { + urlArguments.push(param[1]); + } + } + queryArguments = urlArguments; + } else if (v8args !== undefined) { + queryArguments = Array.from(v8args); + } else if (typeof scriptArgs !== "undefined") { + queryArguments = Array.from(scriptArgs); + } else if (typeof WScript !== "undefined" && WScript.Arguments) { + queryArguments = Array.from(WScript.Arguments); + } + + let runArgs; + if (queryArguments.length > 0) { + runArgs = processArguments(queryArguments); + } else { + const response = fetch('/runArgs.json') + if (!response.ok) { + console.debug(`could not load /args.json: ${response.status}. Ignoring`); + } + runArgs = await response.json(); + } + runArgs = initRunArgs(runArgs); + + return runArgs; +} + +function initRunArgs(runArgs) { + // set defaults + runArgs.applicationArguments = runArgs.applicationArguments === undefined ? [] : runArgs.applicationArguments; + runArgs.profilers = runArgs.profilers === undefined ? [] : runArgs.profilers; + runArgs.workingDirectory = runArgs.workingDirectory === undefined ? '/' : runArgs.workingDirectory; + runArgs.environmentVariables = runArgs.environmentVariables === undefined ? {} : runArgs.environmentVariables; + runArgs.runtimeArgs = runArgs.runtimeArgs === undefined ? [] : runArgs.runtimeArgs; + runArgs.enableGC = runArgs.enableGC === undefined ? true : runArgs.enableGC; + runArgs.diagnosticTracing = runArgs.diagnosticTracing === undefined ? false : runArgs.diagnosticTracing; + runArgs.debugging = runArgs.debugging === undefined ? false : runArgs.debugging; + runArgs.configSrc = runArgs.configSrc === undefined ? './mono-config.json' : runArgs.configSrc; + // default'ing to true for tests, unless debugging + runArgs.forwardConsole = runArgs.forwardConsole === undefined ? !runArgs.debugging : runArgs.forwardConsole; + + return runArgs; +} + +function processArguments(incomingArguments) { + const runArgs = initRunArgs({}); + + console.log("Incoming arguments: " + incomingArguments.join(' ')); + while (incomingArguments && incomingArguments.length > 0) { + const currentArg = incomingArguments[0]; + if (currentArg.startsWith("--profile=")) { + const arg = currentArg.substring("--profile=".length); + runArgs.profilers.push(arg); + } else if (currentArg.startsWith("--setenv=")) { + const arg = currentArg.substring("--setenv=".length); + const parts = arg.split('='); + if (parts.length != 2) + set_exit_code(1, "Error: malformed argument: '" + currentArg); + runArgs.environmentVariables[parts[0]] = parts[1]; + } else if (currentArg.startsWith("--runtime-arg=")) { + const arg = currentArg.substring("--runtime-arg=".length); + runArgs.runtimeArgs.push(arg); + } else if (currentArg == "--disable-on-demand-gc") { + runArgs.enableGC = false; + } else if (currentArg == "--diagnostic-tracing") { + runArgs.diagnosticTracing = true; + } else if (currentArg.startsWith("--working-dir=")) { + const arg = currentArg.substring("--working-dir=".length); + runArgs.workingDirectory = arg; + } else if (currentArg == "--debug") { + runArgs.debugging = true; + } else if (currentArg == "--no-forward-console") { + runArgs.forwardConsole = false; + } else if (currentArg.startsWith("--fetch-random-delay=")) { + const arg = currentArg.substring("--fetch-random-delay=".length); + if (is_browser) { + const delayms = Number.parseInt(arg) || 100; + const originalFetch = globalThis.fetch; + globalThis.fetch = async (url, options) => { + // random sleep + const ms = delayms + (Math.random() * delayms); + console.log(`fetch ${url} started ${ms}`) + await new Promise(resolve => setTimeout(resolve, ms)); + console.log(`fetch ${url} delayed ${ms}`) + const res = await originalFetch(url, options); + console.log(`fetch ${url} done ${ms}`) + return res; + } + } else { + console.warn("--fetch-random-delay only works on browser") + } + } else if (currentArg.startsWith("--config-src=")) { + const arg = currentArg.substring("--config-src=".length); + runArgs.configSrc = arg; + } else { + break; + } + incomingArguments = incomingArguments.slice(1); + } + + runArgs.applicationArguments = incomingArguments; + // cheap way to let the testing infrastructure know we're running in a browser context (or not) + runArgs.environmentVariables["IsBrowserDomSupported"] = is_browser.toString().toLowerCase(); + runArgs.environmentVariables["IsNodeJS"] = is_node.toString().toLowerCase(); + + return runArgs; +} + +// we may have dependencies on NPM packages, depending on the test case +// some of them polyfill for browser built-in stuff +function loadNodeModules(config, require, modulesToLoad) { + modulesToLoad.split(',').forEach(module => { + const { 0: moduleName, 1: globalAlias } = module.split(':'); + + let message = `Loading npm '${moduleName}'`; + let moduleExport = require(moduleName); + + if (globalAlias) { + message += ` and attaching to global as '${globalAlias}'`; + globalThis[globalAlias] = moduleExport; + } else if (moduleName == "node-fetch") { + message += ' and attaching to global'; + globalThis.fetch = moduleExport.default; + globalThis.Headers = moduleExport.Headers; + globalThis.Request = moduleExport.Request; + globalThis.Response = moduleExport.Response; + } else if (moduleName == "node-abort-controller") { + message += ' and attaching to global'; + globalThis.AbortController = moduleExport.AbortController; + } + + console.log(message); + }); + // Must be after loading npm modules. + config.environmentVariables["IsWebSocketSupported"] = ("WebSocket" in globalThis).toString().toLowerCase(); +} + +let mono_exit = (code, reason) => { + console.log(`test-main failed early ${code} ${reason}`); +}; + +async function loadDotnet(file) { + return await import(file); +} + +const App = { + /** Runs a particular test in legacy interop tests + * @type {(method_name: string, args: any[]=, signature: any=) => return number} + */ + call_test_method: function (method_name, args, signature) { + // note: arguments here is the array of arguments passsed to this function + if ((arguments.length > 2) && (typeof (signature) !== "string")) + throw new Error("Invalid number of arguments for call_test_method"); + + const fqn = "[System.Private.Runtime.InteropServices.JavaScript.Tests]System.Runtime.InteropServices.JavaScript.Tests.HelperMarshal:" + method_name; + try { + const method = App.runtime.BINDING.bind_static_method(fqn, signature); + return method.apply(null, args || []); + } catch (exc) { + console.error("exception thrown in", fqn); + throw exc; + } + }, + + create_function(...args) { + const code = args.pop(); + const arg_count = args.length; + args.push("MONO"); + args.push("BINDING"); + args.push("INTERNAL"); + + const userFunction = new Function(...args, code); + return function (...args) { + args[arg_count + 0] = globalThis.App.runtime.MONO; + args[arg_count + 1] = globalThis.App.runtime.BINDING; + args[arg_count + 2] = globalThis.App.runtime.INTERNAL; + return userFunction(...args); + }; + }, + + invoke_js(js_code) { + const closedEval = function (Module, MONO, BINDING, INTERNAL, code) { + return eval(code); + }; + const res = closedEval(globalThis.App.runtime.Module, globalThis.App.runtime.MONO, globalThis.App.runtime.BINDING, globalThis.App.runtime.INTERNAL, js_code); + return (res === undefined || res === null || typeof res === "string") + ? null + : res.toString(); + } +}; +globalThis.App = App; // Necessary as System.Runtime.InteropServices.JavaScript.Tests.MarshalTests (among others) call the App.call_test_method directly + +async function run() { + try { + const { dotnet, exit, INTERNAL } = await loadDotnet('./dotnet.js'); + mono_exit = exit; + + const runArgs = await getArgs(); + if (runArgs.applicationArguments.length == 0) { + mono_exit(1, "Missing required --run argument"); + return; + } + console.log("Application arguments: " + runArgs.applicationArguments.join(' ')); + + dotnet + .withVirtualWorkingDirectory(runArgs.workingDirectory) + .withEnvironmentVariables(runArgs.environmentVariables) + .withDiagnosticTracing(runArgs.diagnosticTracing) + .withExitCodeLogging() + .withElementOnExit(); + + if (is_node) { + dotnet + .withEnvironmentVariable("NodeJSPlatform", process.platform) + .withAsyncFlushOnExit(); + + const modulesToLoad = runArgs.environmentVariables["NPM_MODULES"]; + if (modulesToLoad) { + dotnet.withModuleConfig({ + onConfigLoaded: (config) => { + loadNodeModules(config, INTERNAL.require, modulesToLoad) + } + }) + } + } + if (is_browser) { + dotnet.withEnvironmentVariable("IsWebSocketSupported", "true"); + } + if (runArgs.runtimeArgs.length > 0) { + dotnet.withRuntimeOptions(runArgs.runtimeArgs); + } + if (runArgs.debugging) { + dotnet.withDebugging(-1); + dotnet.withWaitingForDebugger(-1); + } + if (runArgs.forwardConsole) { + dotnet.withConsoleForwarding(); + } + App.runtime = await dotnet.create(); + App.runArgs = runArgs + + console.info("Initializing....."); + + for (let i = 0; i < runArgs.profilers.length; ++i) { + const init = App.runtime.Module.cwrap('mono_wasm_load_profiler_' + runArgs.profilers[i], 'void', ['string']); + init(""); + } + + + if (runArgs.applicationArguments[0] == "--regression") { + const exec_regression = App.runtime.Module.cwrap('mono_wasm_exec_regression', 'number', ['number', 'string']); + + let res = 0; + try { + res = exec_regression(10, runArgs.applicationArguments[1]); + console.log("REGRESSION RESULT: " + res); + } catch (e) { + console.error("ABORT: " + e); + console.error(e.stack); + res = 1; + } + + if (res) mono_exit(1, "REGRESSION TEST FAILED"); + + return; + } + + if (runArgs.applicationArguments[0] == "--run") { + // Run an exe + if (runArgs.applicationArguments.length == 1) { + mono_exit(1, "Error: Missing main executable argument."); + return; + } + try { + const main_assembly_name = runArgs.applicationArguments[1]; + const app_args = runArgs.applicationArguments.slice(2); + const result = await App.runtime.runMain(main_assembly_name, app_args); + mono_exit(result); + } catch (error) { + if (error.name != "ExitStatus") { + mono_exit(1, error); + } + } + } else { + mono_exit(1, "Unhandled argument: " + runArgs.applicationArguments[0]); + } + } catch (err) { + mono_exit(1, err) + } +} + +run(); \ No newline at end of file diff --git a/src/mono/wasm/host/BrowserHost.cs b/src/mono/wasm/host/BrowserHost.cs index e7dac0bbb6217f038a4933108a1c6e3e8eb8c21b..bccca9ff4f179a9873b0378827817b1419aa87ff 100644 --- a/src/mono/wasm/host/BrowserHost.cs +++ b/src/mono/wasm/host/BrowserHost.cs @@ -67,7 +67,7 @@ private async Task RunAsync(ILoggerFactory loggerFactory, CancellationToken toke var runArgsJson = new RunArgumentsJson(applicationArguments: _args.AppArgs, runtimeArguments: _args.CommonConfig.RuntimeArguments, environmentVariables: envVars, - forwardConsole: _args.ForwardConsoleOutput ?? false, + forwardConsoleToWS: _args.ForwardConsoleOutput ?? false, debugging: _args.CommonConfig.Debugging); runArgsJson.Save(Path.Combine(_args.CommonConfig.AppPath, "runArgs.json")); diff --git a/src/mono/wasm/host/RunArgumentsJson.cs b/src/mono/wasm/host/RunArgumentsJson.cs index eb612a8efd60de85c41bf17bbe4e39c0dc06c265..f4573c1c7ff5aff06bfc59129c8291a3f8a57571 100644 --- a/src/mono/wasm/host/RunArgumentsJson.cs +++ b/src/mono/wasm/host/RunArgumentsJson.cs @@ -14,7 +14,7 @@ namespace Microsoft.WebAssembly.AppHost; string[] applicationArguments, string[]? runtimeArguments = null, IDictionary? environmentVariables = null, - bool forwardConsole = false, + bool forwardConsoleToWS = false, bool debugging = false ) { diff --git a/src/tasks/AotCompilerTask/MonoAOTCompiler.cs b/src/tasks/AotCompilerTask/MonoAOTCompiler.cs index 291af85bde42a6f4efacecadf21de2a371b14134..55e93530680f411c7810cb44e234d910b4aba770 100644 --- a/src/tasks/AotCompilerTask/MonoAOTCompiler.cs +++ b/src/tasks/AotCompilerTask/MonoAOTCompiler.cs @@ -488,15 +488,11 @@ private static bool CheckAllUpToDate(IList argsList) { // compare original assembly vs it's outputs.. all it's outputs! string assemblyPath = args.AOTAssembly.GetMetadata("FullPath"); - if (args.ProxyFiles.Any(pf => IsNewerThanOutput(assemblyPath, pf.TargetFile))) + if (args.ProxyFiles.Any(pf => Utils.IsNewerThan(assemblyPath, pf.TargetFile))) return false; } return true; - - static bool IsNewerThanOutput(string inFile, string outFile) - => !File.Exists(inFile) || !File.Exists(outFile) || - (File.GetLastWriteTimeUtc(inFile) > File.GetLastWriteTimeUtc(outFile)); } private IEnumerable FilterOutUnmanagedAssemblies(IEnumerable assemblies) diff --git a/src/tasks/Common/Utils.cs b/src/tasks/Common/Utils.cs index 2c624214937d66013aa17994510c4237825db212..8ed6c2c13711e8bc8f146c64920d23eabdac2085 100644 --- a/src/tasks/Common/Utils.cs +++ b/src/tasks/Common/Utils.cs @@ -23,6 +23,10 @@ public static string GetEmbeddedResource(string file) return reader.ReadToEnd(); } + public static bool IsNewerThan(string inFile, string outFile) + => !File.Exists(inFile) || !File.Exists(outFile) || + (File.GetLastWriteTimeUtc(inFile) > File.GetLastWriteTimeUtc(outFile)); + public static (int exitCode, string output) RunShellCommand( TaskLoggingHelper logger, string command, @@ -233,6 +237,9 @@ public static string ComputeHash(string filepath) #if NETCOREAPP public static void DirectoryCopy(string sourceDir, string destDir, Func? predicate=null) { + if (!Directory.Exists(destDir)) + Directory.CreateDirectory(destDir); + string[] files = Directory.GetFiles(sourceDir, "*", SearchOption.AllDirectories); foreach (string file in files) { diff --git a/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs b/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs index 2fd3597425e343493b9f7ae85477c7e73870efc3..d8793586273fbbeac4d339a7caa963da23844886 100644 --- a/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs +++ b/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs @@ -20,7 +20,10 @@ namespace Microsoft.Workload.Build.Tasks public class InstallWorkloadFromArtifacts : Task { [Required, NotNull] - public ITaskItem[] WorkloadIds { get; set; } = Array.Empty(); + public ITaskItem[] WorkloadIds { get; set; } = Array.Empty(); + + [Required, NotNull] + public ITaskItem[] InstallTargets { get; set; } = Array.Empty(); [Required, NotNull] public string? VersionBand { get; set; } @@ -32,22 +35,81 @@ public class InstallWorkloadFromArtifacts : Task public string? TemplateNuGetConfigPath { get; set; } [Required, NotNull] - public string? SdkDir { get; set; } + public string SdkWithNoWorkloadInstalledPath { get; set; } = string.Empty; public bool OnlyUpdateManifests{ get; set; } private const string s_nugetInsertionTag = ""; + private string AllManifestsStampPath => Path.Combine(SdkWithNoWorkloadInstalledPath, ".all-manifests.stamp"); + private static readonly string[] s_manifestIds = new[] + { + "microsoft.net.workload.mono.toolchain", + "microsoft.net.workload.emscripten.net6", + "microsoft.net.workload.emscripten.net7", + "microsoft.net.workload.mono.toolchain.net6", + "microsoft.net.workload.mono.toolchain.net7" + }; public override bool Execute() { try { - foreach (var workloadIdItem in WorkloadIds) + if (!Directory.Exists(SdkWithNoWorkloadInstalledPath)) + throw new LogAsErrorException($"Cannot find {nameof(SdkWithNoWorkloadInstalledPath)}={SdkWithNoWorkloadInstalledPath}"); + + if (!Directory.Exists(LocalNuGetsPath)) + throw new LogAsErrorException($"Cannot find {nameof(LocalNuGetsPath)}={LocalNuGetsPath} . " + + "Set it to the Shipping packages directory in artifacts."); + + if (!InstallAllManifests()) + return false; + + if (OnlyUpdateManifests) + return !Log.HasLoggedErrors; + + InstallWorkloadRequest[] selectedRequests = InstallTargets + .SelectMany(workloadToInstall => + { + if (!HasMetadata(workloadToInstall, nameof(workloadToInstall), "Variants", Log)) + throw new LogAsErrorException($"Missing Variants metadata on item '{workloadToInstall.ItemSpec}'"); + + return workloadToInstall + .GetMetadata("Variants") + .Split(";", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) + .Select(v => (variant: v, target: workloadToInstall)); + }) + .SelectMany(w => + { + IEnumerable workloads = WorkloadIds.Where(wi => wi.GetMetadata("Variant") == w.variant) + .Select(wi => new InstallWorkloadRequest(wi, w.target)); + return workloads.Any() + ? workloads + : throw new LogAsErrorException($"Could not find any workload variant named '{w.variant}'"); + }).ToArray(); + + foreach (InstallWorkloadRequest req in selectedRequests) { - if (!ExecuteInternal(workloadIdItem)) + if (Directory.Exists(req.TargetPath)) + { + Log.LogMessage(MessageImportance.Low, $"Deleting directory {req.TargetPath}"); + Directory.Delete(req.TargetPath, recursive: true); + } + } + + string cachePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + foreach (InstallWorkloadRequest req in selectedRequests) + { + Log.LogMessage(MessageImportance.High, $"** Installing workload {req.WorkloadId} in {req.TargetPath} **"); + if (!req.Validate(Log)) return false; + + if (!ExecuteInternal(req) && !req.IgnoreErrors) + return false; + + File.WriteAllText(req.StampPath, string.Empty); } - return true; + + return !Log.HasLoggedErrors; } catch (LogAsErrorException laee) { @@ -56,73 +118,144 @@ public override bool Execute() } } - private bool ExecuteInternal(ITaskItem workloadId) + private bool ExecuteInternal(InstallWorkloadRequest req) { - if (!HasMetadata(workloadId, nameof(workloadId), "Version") || - !HasMetadata(workloadId, nameof(workloadId), "ManifestName")) + if (!File.Exists(TemplateNuGetConfigPath)) { + Log.LogError($"Cannot find TemplateNuGetConfigPath={TemplateNuGetConfigPath}"); return false; } - if (!Directory.Exists(SdkDir)) - { - Log.LogError($"Cannot find SdkDir={SdkDir}"); + Log.LogMessage(MessageImportance.Low, $"Duplicating {SdkWithNoWorkloadInstalledPath} into {req.TargetPath}"); + Utils.DirectoryCopy(SdkWithNoWorkloadInstalledPath, req.TargetPath); + + string nugetConfigContents = GetNuGetConfig(); + if (!InstallPacks(req, nugetConfigContents)) return false; - } - if (!File.Exists(TemplateNuGetConfigPath)) + UpdateAppRef(req.TargetPath, req.Version); + + return !Log.HasLoggedErrors; + } + + private bool InstallAllManifests() + { + var allManifestPkgs = Directory.EnumerateFiles(LocalNuGetsPath, "*Manifest*nupkg"); + if (!AnyInputsNewerThanOutput(AllManifestsStampPath, allManifestPkgs)) { - Log.LogError($"Cannot find TemplateNuGetConfigPath={TemplateNuGetConfigPath}"); - return false; + Log.LogMessage(MessageImportance.Low, + $"Skipping installing manifests because the {AllManifestsStampPath} " + + $"is newer than packages {string.Join(',', allManifestPkgs)}."); + return true; } - Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** Installing workload manifest {workloadId.ItemSpec} **{Environment.NewLine}"); + ExecuteHackForInstallerMismatch(); string nugetConfigContents = GetNuGetConfig(); - if (!InstallWorkloadManifest(workloadId, workloadId.GetMetadata("ManifestName"), workloadId.GetMetadata("Version"), nugetConfigContents, stopOnMissing: true)) - return false; + HashSet manifestsInstalled = new(); + foreach (ITaskItem workload in WorkloadIds) + { + InstallWorkloadRequest req = new(workload, new TaskItem()); - if (OnlyUpdateManifests) - return !Log.HasLoggedErrors; + if (manifestsInstalled.Contains(req.ManifestName)) + { + Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** Manifests for workload {req.WorkloadId} are already installed **{Environment.NewLine}"); + continue; + } - if (!InstallPacks(workloadId, nugetConfigContents)) - return false; + Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** Installing manifests for workload {req.WorkloadId} **"); + if (!InstallWorkloadManifest(workload, + req.ManifestName, + req.Version, + SdkWithNoWorkloadInstalledPath, + nugetConfigContents, + stopOnMissing: true)) + { + return false; + } - UpdateAppRef(workloadId.GetMetadata("Version")); + manifestsInstalled.Add(req.ManifestName); + } - return !Log.HasLoggedErrors; + File.WriteAllText(AllManifestsStampPath, string.Empty); + + return true; + + void ExecuteHackForInstallerMismatch() + { + // HACK - because sdk doesn't yet have the version-less manifest names in the known + // workloads list + string? txtPath = Directory.EnumerateFiles(Path.Combine(SdkWithNoWorkloadInstalledPath, "sdk"), "IncludedWorkloadManifests.txt", + new EnumerationOptions { RecurseSubdirectories = true, MaxRecursionDepth = 2}) + .FirstOrDefault(); + if (txtPath is null) + throw new LogAsErrorException($"Could not find IncludedWorkloadManifests.txt in {SdkWithNoWorkloadInstalledPath}"); + + string stampPath = Path.Combine(Path.GetDirectoryName(txtPath)!, ".stamp"); + if (File.Exists(stampPath)) + return; + + List lines = File.ReadAllLines(txtPath).ToList(); + int originalCount = lines.Count; + + // we want to insert the manifests in a fixed order + // so first remove all of them + foreach (string manifestId in s_manifestIds) + lines.Remove(manifestId); + // .. and then insert + lines.AddRange(s_manifestIds); + + // currently using emscripten.net7 instead of this, + // so remove it from the list + lines.Remove("microsoft.net.workload.emscripten"); + + if (lines.Count != originalCount) + { + // Update the file only if we are making any changes + File.WriteAllText(txtPath, string.Join(Environment.NewLine, lines)); + } + + File.WriteAllText(stampPath, ""); + } } - private bool InstallPacks(ITaskItem workloadId, string nugetConfigContents) + private bool InstallPacks(InstallWorkloadRequest req, string nugetConfigContents) { string nugetConfigPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); File.WriteAllText(nugetConfigPath, nugetConfigContents); - Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** workload install **{Environment.NewLine}"); + // Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** dotnet workload install {req.WorkloadId} **{Environment.NewLine}"); (int exitCode, string output) = Utils.TryRunProcess( Log, - Path.Combine(SdkDir, "dotnet"), - $"workload install --skip-manifest-update --no-cache --configfile \"{nugetConfigPath}\" {workloadId.ItemSpec}", + Path.Combine(req.TargetPath, "dotnet"), + $"workload install --skip-manifest-update --no-cache --configfile \"{nugetConfigPath}\" {req.WorkloadId}", workingDir: Path.GetTempPath(), silent: false, + logStdErrAsMessage: req.IgnoreErrors, debugMessageImportance: MessageImportance.High); if (exitCode != 0) { - Log.LogError($"workload install failed with exit code {exitCode}: {output}"); - - foreach (string dir in Directory.EnumerateDirectories(Path.Combine(SdkDir, "sdk-manifests"), "*", SearchOption.AllDirectories)) - Log.LogMessage(MessageImportance.Low, $"\t{Path.Combine(SdkDir, "sdk-manifests", dir)}"); + if (req.IgnoreErrors) + { + Log.LogMessage(MessageImportance.High, + $"{Environment.NewLine} ** Ignoring workload installation failure exit code {exitCode}. **{Environment.NewLine}"); + } + else + { + Log.LogError($"workload install failed with exit code {exitCode}: {output}"); + } - foreach (string dir in Directory.EnumerateDirectories(Path.Combine(SdkDir, "packs"), "*", SearchOption.AllDirectories)) - Log.LogMessage(MessageImportance.Low, $"\t{Path.Combine(SdkDir, "packs", dir)}"); + foreach (string dir in Directory.EnumerateDirectories(Path.Combine(req.TargetPath, "sdk-manifests"), "*", SearchOption.AllDirectories)) + Log.LogMessage(MessageImportance.Low, $"\t{Path.Combine(req.TargetPath, "sdk-manifests", dir)}"); - return false; + foreach (string dir in Directory.EnumerateDirectories(Path.Combine(req.TargetPath, "packs"), "*", SearchOption.AllDirectories)) + Log.LogMessage(MessageImportance.Low, $"\t{Path.Combine(req.TargetPath, "packs", dir)}"); } return !Log.HasLoggedErrors; } - private void UpdateAppRef(string version) + private void UpdateAppRef(string sdkPath, string version) { Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** Updating Targeting pack **{Environment.NewLine}"); @@ -131,7 +264,7 @@ private void UpdateAppRef(string version) throw new LogAsErrorException($"Could not find {pkgPath} needed to update the targeting pack to the newly built one." + " Make sure to build the subset `packs`, like `./build.sh -os browser -s mono+libs+packs`."); - string packDir = Path.Combine(SdkDir, "packs", "Microsoft.NETCore.App.Ref"); + string packDir = Path.Combine(sdkPath, "packs", "Microsoft.NETCore.App.Ref"); string[] dirs = Directory.EnumerateDirectories(packDir).ToArray(); if (dirs.Length != 1) throw new LogAsErrorException($"Expected to find exactly one versioned directory under {packDir}, but got " + @@ -150,28 +283,35 @@ private void UpdateAppRef(string version) private string GetNuGetConfig() { string contents = File.ReadAllText(TemplateNuGetConfigPath); - if (contents.IndexOf(s_nugetInsertionTag) < 0) + if (contents.IndexOf(s_nugetInsertionTag, StringComparison.InvariantCultureIgnoreCase) < 0) throw new LogAsErrorException($"Could not find {s_nugetInsertionTag} in {TemplateNuGetConfigPath}"); return contents.Replace(s_nugetInsertionTag, $@""); } - private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string version, string nugetConfigContents, bool stopOnMissing) + private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string version, string sdkDir, string nugetConfigContents, bool stopOnMissing) { - Log.LogMessage(MessageImportance.High, $"Installing workload manifest for {name}/{version}"); + Log.LogMessage(MessageImportance.High, $" ** Installing manifest: {name}/{version}"); // Find any existing directory with the manifest name, ignoring the case // Multiple directories for a manifest, differing only in case causes // workload install to fail due to duplicate manifests! // This is applicable only on case-sensitive filesystems - string outputDir = FindSubDirIgnoringCase(Path.Combine(SdkDir, "sdk-manifests", VersionBand), name); + string manifestVersionBandDir = Path.Combine(sdkDir, "sdk-manifests", VersionBand); + if (!Directory.Exists(manifestVersionBandDir)) + { + Log.LogMessage(MessageImportance.Low, $" Could not find {manifestVersionBandDir}. Creating it.."); + Directory.CreateDirectory(manifestVersionBandDir); + } + + string outputDir = FindSubDirIgnoringCase(manifestVersionBandDir, name); PackageReference pkgRef = new(Name: $"{name}.Manifest-{VersionBand}", Version: version, OutputDir: outputDir, relativeSourceDir: "data"); - if (!PackageInstaller.Install(new[]{ pkgRef }, nugetConfigContents, Log, stopOnMissing)) + if (!PackageInstaller.Install(new[] { pkgRef }, nugetConfigContents, Log, stopOnMissing)) return false; string manifestDir = pkgRef.OutputDir; @@ -209,7 +349,7 @@ private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string v { foreach ((string depName, string depVersion) in manifest.DependsOn) { - if (!InstallWorkloadManifest(workloadId, depName, depVersion, nugetConfigContents, stopOnMissing: false)) + if (!InstallWorkloadManifest(workloadId, depName, depVersion, sdkDir, nugetConfigContents, stopOnMissing: false)) { Log.LogWarning($"Could not install manifest {depName}/{depVersion}. This can be ignored if the workload {workloadId.ItemSpec} doesn't depend on it."); continue; @@ -220,31 +360,35 @@ private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string v return true; } - private bool HasMetadata(ITaskItem item, string itemName, string metadataName) + private static bool HasMetadata(ITaskItem item, string itemName, string metadataName, TaskLoggingHelper log) { if (!string.IsNullOrEmpty(item.GetMetadata(metadataName))) return true; - Log.LogError($"{itemName} item ({item.ItemSpec}) is missing Name metadata"); + log.LogError($"{itemName} item ({item.ItemSpec}) is missing {metadataName} metadata"); return false; } private string FindSubDirIgnoringCase(string parentDir, string dirName) { - IEnumerable matchingDirs = Directory.EnumerateDirectories(parentDir, + string[] matchingDirs = Directory.EnumerateDirectories(parentDir, dirName, - new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive }); + new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive }) + .ToArray(); string? first = matchingDirs.FirstOrDefault(); - if (matchingDirs.Count() > 1) + if (matchingDirs.Length > 1) { - Log.LogWarning($"Found multiple directories with names that differ only in case. {string.Join(", ", matchingDirs.ToArray())}" + Log.LogWarning($"Found multiple directories with names that differ only in case. {string.Join(", ", matchingDirs)}" + $"{Environment.NewLine}Using the first one: {first}"); } return first ?? Path.Combine(parentDir, dirName.ToLower(CultureInfo.InvariantCulture)); } + private static bool AnyInputsNewerThanOutput(string output, IEnumerable inputs) + => inputs.Any(i => Utils.IsNewerThan(i, output)); + private sealed record ManifestInformation( object Version, string Description, @@ -272,6 +416,36 @@ List Platforms [property: JsonPropertyName("alias-to")] Dictionary AliasTo ); + + internal sealed record InstallWorkloadRequest( + ITaskItem Workload, + ITaskItem Target) + { + public string ManifestName => Workload.GetMetadata("ManifestName"); + public string Version => Workload.GetMetadata("Version"); + public string TargetPath => Target.GetMetadata("InstallPath"); + public string StampPath => Target.GetMetadata("StampPath"); + public bool IgnoreErrors => Workload.GetMetadata("IgnoreErrors").ToLowerInvariant() == "true"; + public string WorkloadId => Workload.ItemSpec; + + public bool Validate(TaskLoggingHelper log) + { + if (!HasMetadata(Workload, nameof(Workload), "Version", log) || + !HasMetadata(Workload, nameof(Workload), "ManifestName", log) || + !HasMetadata(Target, nameof(Target), "InstallPath", log)) + { + return false; + } + + if (string.IsNullOrEmpty(TargetPath)) + { + log.LogError($"InstallPath is empty for workload {Workload.ItemSpec}"); + return false; + } + + return true; + } + } } internal sealed record PackageReference(string Name, diff --git a/src/workloads/workloads.csproj b/src/workloads/workloads.csproj index 1acaa7ea2356a086f10bfd8ba151dc6a08cd0695..9c012c5b43a3071b44d9de6cf24a8df42f65fe08 100644 --- a/src/workloads/workloads.csproj +++ b/src/workloads/workloads.csproj @@ -37,38 +37,80 @@ - - - - - - - - - - - - - - - - + + <_ComponentResources Include="microsoft-net-runtime-mono-tooling-net7" Title=".NET 7.0 Shared Mobile Build Tools" + Description="Shared build tasks for mobile platform development."/> + <_ComponentResources Include="wasm-tools-net7" Title=".NET 7.0 WebAssembly Build Tools" + Description="Build tools for net6.0 WebAssembly ahead-of-time (AoT) compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-android-net7" Title=".NET 7.0 Android Build Tools" + Description="Build tools for net6.0 Android compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-android-aot-net7" Title=".NET 7.0 Android Build Tools (AoT)" + Description="Build tools for net6.0 Android ahead-of-time (AoT) compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-ios-net7" Title=".NET 7.0 iOS Build Tools" + Description="Build tools for net7.0 iOS compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-tvos-net7" Title=".NET 7.0 tvOS Build Tools" + Description="Build tools for net7.0 tvOS compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-maccatalyst-net7" Title=".NET 7.0 Mac Catalyst Build Tools" + Description="Build tools for net7.0 Mac Catalyst compilation and native linking."/> + <_ComponentResources Include="runtimes-ios-net7" Title=".NET 7.0 iOS Runtimes" + Description=".NET 7.0 runtime components for iOS execution."/> + <_ComponentResources Include="runtimes-tvos-net7" Title=".NET 7.0 tvOS Build Tools" + Description=".NET 7.0 runtime components for tvOS execution."/> + <_ComponentResources Include="runtimes-maccatalyst-net7" Title=".NET 7.0 Mac Catalyst Build Tools" + Description=".NET 7.0 runtime components for Mac Catalyst execution."/> + <_ComponentResources Include="runtimes-windows-net7" Title=".NET 7.0 Windows Runtimes" + Description=".NET 7.0 runtime components for Windows execution."/> + + <_ComponentResources Include="microsoft-net-runtime-mono-tooling-net6" Title=".NET 6.0 Shared Mobile Build Tools" + Description="Shared build tasks for mobile platform development."/> + <_ComponentResources Include="wasm-tools-net6" Title=".NET 6.0 WebAssembly Build Tools" + Description="Build tools for net6.0 WebAssembly ahead-of-time (AoT) compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-android-net6" Title=".NET 6.0 Android Build Tools" + Description="Build tools for net6.0 Android compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-android-aot-net6" Title=".NET 6.0 Android Build Tools (AoT)" + Description="Build tools for net6.0 Android ahead-of-time (AoT) compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-ios-net6" Title=".NET 6.0 iOS Build Tools" + Description="Build tools for net6.0 iOS compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-tvos-net" Title=".NET 6.0 tvOS Build Tools" + Description="Build tools for net6.0 tvOS compilation and native linking."/> + <_ComponentResources Include="microsoft-net-runtime-maccatalyst-net6" Title=".NET 6.0 Mac Catalyst Build Tools" + Description="Build tools for net6.0 Mac Catalyst compilation and native linking."/> + <_ComponentResources Include="runtimes-ios-net6" Title=".NET 6.0 iOS Runtimes" + Description=".NET 6.0 runtime components for iOS execution."/> + <_ComponentResources Include="runtimes-tvos-net6" Title=".NET 6.0 tvOS Build Tools" + Description=".NET 6.0 runtime components for tvOS execution."/> + <_ComponentResources Include="runtimes-maccatalyst-net6" Title=".NET 6.0 Mac Catalyst Build Tools" + Description=".NET 6.0 runtime components for Mac Catalyst execution."/> + <_ComponentResources Include="runtimes-windows-net6" Title=".NET 6.0 Windows Runtimes" + Description=".NET 6.0 runtime components for Windows execution."/> + + @@ -79,8 +121,11 @@ + + Mono. + - Mono + Mono. Microsoft @@ -91,10 +136,11 @@ - +