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 @@
-
+