Add runtimeconfig.json support for WebAssembly (#56486)
* Initial change for adding runtimeconfig to wasm
* Add runtimeconfig support to wasm
* Move test folder and update runtimeconifg task name
* Fix test
* Fix test csproj file
* Use the right var for main dll name
* Resolve review feedback part 1
* Resolve review feedbacks part 2
* Add doc for updating dependencies when adding new tasks
* Remove redundant condition and redundant copy
* There is no runtimeconfig.json file to parse, when OutputType is library. So skip it.
* Skip for Android tests as well.
* Remove the wrong locatioin of WasmFilesToIncludeInFileSystem
* Update runtimeconfig file path
* Add RuntimeConfigParserTasksAssemblyPath to linker test project template
* Fix test failures on WASM EAT and AOT lanes
* [wasm] Add a test for reading runtimeconfig.json
* improve error reporting slightly
* Enable tests
* One more thing to enable tests
* Run target _WasmGenerateRuntimeConfig when runtimeconfig.json file exists
* Add a test for configure runtime using msbuild properties
* Fix runtime test failures
* Update tests base on feedback
* Add missing ")"
* Add one more condition
* More format changes
* Better error handling
* [wasm] Fix build for a test support project
This fixes the build for ApplyUpdateReferencedAssembly.csproj, which is
a support project for HotReload wasm functional test.
```
D:\workspace\_work\1\s\src\mono\wasm\build\WasmApp.targets(131,5): error : Could not find
D:\workspace\_work\1\s\artifacts\bin\ApplyUpdateReferencedAssembly\net6.0-Release\browser-wasm\publish\ApplyUpdateReferencedAssembly.runtimeconfig.json
for D:\workspace\_work\1\s\artifacts\bin\ApplyUpdateReferencedAssembly\net6.0-Release\browser-wasm\publish\ApplyUpdateReferencedAssembly.dll.
[D:\workspace\_work\1\s\src\tests\FunctionalTests\WebAssembly\Browser\HotReload\ApplyUpdateReferencedAssembly\ApplyUpdateReferencedAssembly.csproj]
```
The wasm targets should be run at all for this project. But they are run
because they get imported by tests.wasm.targets, which gets imported because
`$(IsTestProject)=true`.
The csproj has `$(IsTestProject)=false`, and `$(IsTestSupportProject)=true`,
which should mean that the test.props/targets don't get imported. But the
import is conditioned on `$(EnableTestSupport)`, which gets set in
`src/libraries/Directory.Build.props`. And that means setting
`$(IsTestProject)=true` in the csproj is too late.
So, instead, set that in a `Directory.Build.props`. And also, ensure that the
`Directory.Build.props` for functional tests doesn't override the value!
Co-authored-by: Ankit Jain <radical@gmail.com>
29 files changed: