This change includes several improvements to CSS isolation that we have gathered from validation and usage feedback.
We have switched from producing a single scoped CSS bundle file for the entire application with all the scoped css files from the current project, referenced projects and package projects to producing one bundle per referenced project/package and to include those bundles into an "application" bundle throught CSS @import statements.
We have cleaned up the bundle names to make them more unique by including the project name on them and we have also cleaned up the bundle extensions.
We have decided to put the individual bundles generated for the project scoped css assets into the static web assets base path of the project, so that when developers reference assets from their scoped css files (like using the CSS url function) the path they use matches what they have inside their library wwwroot folder.
We have decided to put the application bundle on the root path of the application provided that the developer has not overriden the default StaticWebAssetsBasePath.
This is so that the bundle location is consistent across templates, and can be found at ProjectName.styles.css independent of whether the app is a blazor webassembly app or a server side blazor app.
For cases where the default StaticWebAssetBasePath has been overriden, the value is respected and the bundle is placed at $(StaticWebAssetBasePath)/ProjectName.styles.css.
Packaged razor class libraries with scoped css files now package a "project" bundle instead of the individual files.
* Added IJSUnmarshalledObjectReference
* Working support for IJSUnmarshalledObjectReference
* CR feedback
* Removed IVT and made JSObjectReference public
* Updated JSON converter.
* Update JSObjectReferenceJsonConverterTest.cs
* Removed whitespace 😓
* Use ItemSize if it's close to the calculated item size.
* Update WeatherForecastService.cs
* Improved item size calculation.
* Always use calculated item size
* Disable overflow anchoring on scroll containers (except the document itself)
* Update JS files following rebase
* Apply overflow anchor fix to document element too
* Add OverscanCount parameter
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Changes from API review
* Feedback from security review
* Update IBrowserFile.cs
* Updated documentation.
* Moved InputFile to M.A.Components.Forms
* More changes
* Move ProtectedBrowserStorage to it's own package
* Mark Components.Web.Extensions as non-shipping until we can move it over
* Allow InputFile.OpenReadStreamAsync to specify an expected file size.
* Fix E2E tests
* CR: Throw if user supplies too many files.
* Another build fix
* CR: Zero files is not a scenario
* Update E2E tests
* Update JS binaries after rebase
* Update test
Co-authored-by: Pranav K <prkrishn@hotmail.com>
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Use MonoProxy package for debugging
* Initial working end-to-end
* Update package version and polish up dbging issues
* Throw exception if DebugProxy received no output
- mostly duplicates #25217
- update `BaselineGenerator` to produce baselines useful in 6.0 (too)
- update Baseline.Designer.props using new generator (matching 3.1.7 release)
- always suppress references expressed only in `*.nuspec` files
- needed even in servicing builds
- restore warning and errors about removed references (new for 5.0)
- adjust exclusions to handle `@(_ProjectReferenceByAssemblyName)` removal
nit: do not generate empty `<ItemGroup />` elements
* Correct `@(SuppressBaselineReference)` items
- remove out-of-date `@(SuppressBaselineReference)` items
- either 3.1.7 baselines we're using don't include reference or still using package
- fix some comments and `Condition` attributes to make remainder easy to find
- add missing `@(SuppressBaselineReference)` items
* Do not include the shared framework in the packages
DevServer and dotnet-watch include binaries from the ASP.NET Core shared framework
as part of the package. This change compiles these projects against the most recently built
version of the shared framework which ensures build and publish work as normals. Individual
projects from the runtime can be referenced to pick up new runtime features when necessary
* More hacks!
* Ensure shared runtime is built before running tests
* Delete dotnet-watch.nuspec
* Make PropertySetter a concrete type
* Use the pattern from PropertyHelpers to set property values
* Tweaks to Blazor WebAssembly tests to allow running tests locally
* Update src/Components/Components/src/Reflection/IPropertySetter.cs
Porting #23932 to WebAssemblySDK.
* Default new runtime feature switches
These new feature switches have been added to the runtime to make applications smaller. Setting reasonable defaults to Blazor wasm projects.
Fixes https://github.com/dotnet/aspnetcore/issues/25099
If there is an ask mode template to fill out, let me know and I can do it.
* Update to @azure/msal-browser@2.0.0
* Retain promise during initialization
* Set knownAuthority hostname from authority URL
* Add KnownAuthorities config option and fix silent sign-in
* Set knownAuthorities default to empty list
These changes are to improve the default reconnection behavior of the client
- [x] Match the reconnection time with server side
- [x] Add indicator to know at which reconnection attempt we currently are
- [x] [Additional] Add a loader symbol
- [x] Add client side test
Addresses #18745
This was resolved as part of moving to the WebAssembly SDK.
A test that would have helped us catch this sooner. This change addresses the test gap.
Resolves https://github.com/dotnet/aspnetcore/issues/24568
* Updates to IdentityServer 4.0.4
* Updates templates with the new migrations.
* Fixes a small configuration bug that required the configuration for the key to be specified.
* Updates the error url in IdentityServer config to match our template defaults.
* Allow ".dll" extensions in BlazorWebAssemblyLazyLoad MSBuild task.
* Only allow assemblies that are specified with an extension.
Co-authored-by: Adrian Wright <adrian@compiledcoding.co.uk>
* Add tests for navigate on form submit
* Add fix for re-render after event dispatch
* Remove deferred event handling in .NET
* Only dispatch events with registered handlers once
* Use BlazorWebAssemblySDK
* Update projects to use the BlazorSDK
* Remove tasks and targets from RazorSDK
* Remove workarounds from BlazorSDK
* Fixup
* Fixup
* Remove Internal.AspNetCore.Analyzers
This resolves build flakiness caused by referencing the analyzer:
```
2020-08-07T21:22:39.1149296Z ##[error].dotnet\sdk\5.0.100-rc.1.20379.10\Microsoft.Common.CurrentVersion.targets(4188,5): error MSB3026: (NETCORE_ENGINEERING_TELEMETRY=Build)
Could not copy "F:\workspace\_work\1\s\artifacts\obj\Internal.AspNetCore.Analyzers\Release\netstandard1.3\Internal.AspNetCore.Analyzers.dll"
to "F:\workspace\_work\1\s\artifacts\bin\Internal.AspNetCore.Analyzers\Release\netstandard1.3\Internal.AspNetCore.Analyzers.dll". Beginning retry 1 in 1000ms.
The process cannot access the file 'F:\workspace\_work\1\s\artifacts\bin\Internal.AspNetCore.Analyzers\Release\netstandard1.3\Internal.AspNetCore.Analyzers.dll' because it is being used by another process.
```
The analyzer checks if pubternal types are being exposed in public APIs. We no longer author pubternal types, so this is no longer a concern.
* Remove DisablePubternalApiCheck
* Quarantine LinkedApplicationWorks
* Quarantine flaky tests
* Quarantine CanBindTextbox_Decimal_InvalidInput
* React to NetworkException type
* One more test
* Remove LinkerWorkaround.xml
The workaround file is no longer needed, now that the underlying bugs are fixed in the dotnet/runtime libraries.
Fix#23262
* Also remove LinkerWorkaround from Components/WebAssembly
* Add guard check for cleared closest DOM element
* Update src/Components/Web.JS/src/Rendering/BrowserRenderer.ts
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Quarantine falky test ServerEventTest.EventDuringBatchRendering_CanTriggerDOMEvents
Blazor's E2E testing uses a much shorter timeout after a test failure. This test run had several test failures, but most of these appear to be the result of
an incredibly short timeot. This PR quarantines the one test that appears to be a genuine failure and also increases the timeout duration for after test failure.
* Quarantine ServerExecutionTests.ServerGlobalizationTest.CanSetCultureAndParseCultureSensitiveNumbersAndDates
* Put back InternalCalls
* Removing .NET profiling calls
* Remove JS side profiling
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
- #20818, fix e.g. references to Microsoft.Web.Xdt.Extensions in our packages
- make `@(Reference)` items much more broadly applicable
- emit an error when `@(ProjectReference)` is used instead of `@(Reference)`
- then get rid of the errors (!!)
- rename a couple of projects to match their assembly names
- then regenerate the `@(ProjectReferenceProvider)` items
- switch intersection approach from Exclude / Exclude to Copy / Update / Copy
Projects of particular interest:
- src/DefaultBuilder/src/Microsoft.AspNetCore.csproj
- honouring metadata left e.g. Microsoft.AspNetCore.Components.WebAssembly.DevServer package unchanged
- removed redundant metadata after that confirmation
- src/Razor/tools/Microsoft.AspNetCore.Razor.Internal.Transport/
- content of this package unchanged but metadata avoids extra work
- add a comment about the extra work
- src/SiteExtensions/LoggingAggregate/src/Microsoft.AspNetCore.AzureAppServices.SiteExtension/
- success! removes Microsoft.Web.Xdt.Extensions dependency from the package
- src/SiteExtensions/Runtime/Microsoft.AspNetCore.Runtime.SiteExtension.pkgproj
- add a `Condition` to avoid an ordering issue I hit here
- src/Tools/Extensions.ApiDescription.Server/src/
- avoid errors the new build ordering and timing caused
Separately, up the timeout in the `<DownloadFile />` task
- hit repeated timeouts downloading dotnet-runtime-5.0.0-rc.1.20370.4-win-x64.zip
nits:
- remove dupe `@(Reference)` item in Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj
- remove useless `%(ProjectReference.IsImplicitlyDefined)` metadata as well as its misspellings
- remove extra spaces from ProjectReferences.props
- clean up a few comments in ResolveReferences.targets
* !fixup! Correct other references to renamed projects
Using the full gc sometimes leads to an infinite recursion resulting
in a browser freeze. This was noted as part of running Blazor's benchmarks.
This is being addressed in rc1, in the meanwhile this reverts the behavior to 3.2 defaults.
Browser freezes when using a Blazor WASM application.
Yes. Full GC on is new to WASM on .NET Core
Low. Off by default is the behavior we had in 3.2.
* Wires up CSS isolation on the build.
* Transforms the css files during build.
* Bundles all scopes css into a single file and exposes it on _framework/scoped.styles.cs
* Packs pre-processed files as static web assets.
* Wires up CSS isolation on the build.
* Transforms the css files during build.
* Bundles all scopes css into a single file and exposes it on _framework/scoped.styles.cs
* Packs pre-processed files as static web assets.
* Started on head manager
* Working prototype.
* Started on improved meta tag support.
* Improved meta support and better thread safety.
* Improved synchronization.
* Added support for meta "property" attribute.
* Updated exception message.
* Added link element support.
* Started on functional tests.
* Added more functional tests.
* Added E2E tests.
* Simplified implementation.
* Prerendering support.
* Small documentation updates.
* Made TagElement and TitleElement readonly.
* Removed M.A.Components.Server dependency.
* Minor fixes and updates.
* Update PrerenderedHeadComponent.razor
* Removed AddWebExtensions.
* Applied CR feedback
* Add element/component name for duplicate key
* Add in keyword for frame param
Co-authored-by: Javier Calvarro Nelson <jacalvar@microsoft.com>
Co-authored-by: Javier Calvarro Nelson <jacalvar@microsoft.com>
* Render 'OnNavigateError' fragment on unhandled exception in OnNavigateAsync
* Address first round of feedback from peer review
* Refactor OnNavigateAsync handling and fix tests
* Make OnNavigateAsync cancellation cooperative with user tasks
* Fix aggressive re-rendering and cancellation handling
* Fix up tests based on peer review
* Remove all ref/ projects
* Remove GenAPI infrastructure
* Remove notion of a reference assembly project
- remove `$(IsReferenceAssemblyProject)`, `$(ReferenceReferenceAssemblies)` and `$(ReferenceImplementationAssemblies)`
- remove unnecessary `$(NoWarn)` settings
nits:
- remove a few misleading comments
- wrap some long lines
* Move .0 package version workaround into Versions.props
- touch up SharedFramework.External.props
* Expose `%(LatestPackageReference.RTMVersion)` metadata
- automate use of properties in the `@(LatestPackageReference)` item group to make this maintainable
- add a couple of special cases at the bottom of eng/Dependencies.props
- add one more `$(...PackageVersion)` property to avoid yet-another special case
* Enable Roslyn reference assemblies
- exclude ref/ assembly from packages other than targeting pack
- update Microsoft.AspNetCore.App.Ref.csproj
- `%(IsReferenceAssembly)` and `%(ReferenceGrouping)` metadata no longer relevant
- only ref/ assemblies are in `@(ReferencePathWithRefAssemblies)` item group
nits:
- remove now-unnecessary workaround
- issues with TFM transition are behind us
- clean up Microsoft.AspNetCore.App.Runtime.csproj slightly
- use `GeneratePathProperty="true"`
- reorder item / property settings for meta-expansion
- correct spelling errors and phrasing in comments
* Update documentation to reflect recent changes
- remove CrossRepoBreakingChanges.md; was tied to old TeamCity infrastructure
- also much less relevant given repo merges
- adjust details and examples in ReferenceResolution.md
- reflect repo merges, Dependencies.props changes, and current Maestro++ channels
- add a few more details e.g. specific files where Version.Details.xml versions are used
* !fixup! Remove another irrelevant doc file
* !fixup! Address PR review suggestions
- convert a couple of warnings to errors
- use consistent casing for Microsoft.NETCore.App.Runtime.* packages
- reduce `%(LatestPackageReference.Version)` metadata special cases
- add and improve comments e.g.
- improve comments about `$(*V0PackageVersion)` properties
- improve placement of comments about item removal in ResolveReferences.targets
- confirmed `$(*V0PackageVersion)` property list is complete
nits:
- fix solution example in ReferenceResolution.md
- remove item group definition for `@(LatestPackageReference)`
- remove `%(LatestPackageReference.VersionName)` metadata after use; large item group
- similarly, remove `%(LatestPackageReference.RTMVersion)` when not needed; just complicates `Condition`s
When I squash, I must remember this fixes
- #14801
- dotnet/aspnetcore-internal#2693
* Actually use `%(LatestPackageReference.RTMVersion)` metadata
- gather RTM package references in a new project
- a (very) separate project to work around package conflict resolution
- empty `Test` target works around Arcade's testing approach
- new target in ResolveReferences.targets updates relevant assembly paths to use the RTM packages
- done as soon as possible after `ResolvePackageAssets` determines the paths
- done for all compilation inputs, not just ref/ assemblies