Commit Graph

233 Commits

Author SHA1 Message Date
Pranav K 5aa4a7cd41
Avoid using PATH to find dotnet.exe in RazorSDK tasks (#25750)
This pattern is pretty identical to what we have in other SDKs. It allows
using the SDK when dotnet isn't in the path such as the https://github.com/dotnet/aspnetcore/issues/25746.

Fixes #14432
2020-09-10 16:30:55 -07:00
Pranav K 690c717314
Update to latest SDK (#25421)
* React to platform compatibility analyzer warnings
* React to new warnings
* Add platform compatibility attributes
2020-09-10 15:12:17 -07:00
Brennan 2fb2055d1e
Quarantine BundlesScopedCssFiles_UpdatesBundleWhenContentsChange (#25656) 2020-09-06 11:52:39 -07:00
Javier Calvarro Nelson 3d38d397ae
[Blazor] CSS isolation follow-ups (#25565)
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.
2020-09-04 10:54:44 -07:00
Doug Bunting 7579b300f7
Mark some projects as non-packable or non-shippable (#25468)
- used `$(IsTestAssetProject)` in src/Razor/test; slightly more correct
  - we don't have a special category for test infrastructure projects
2020-08-31 22:46:53 -07:00
Doug Bunting 1f84e28882
Use `$(TargetFrameworkIdentifier)` and `$(TargetFrameworkVersion)` consistently (#25428)
- always use `$([MSBuild]::VersionXYZ(...))` for version checks
- use `$(NETCoreAppFrameworkIdentifier)` where it's available
- move `$(KnownAppHostPackOrFrameworkReferenceTfm)` setting to Directory.Build.props
  - use it to correct `@(KnownFrameworkReference)` updates
  - metadata of those items still uses `netcoreapp5.0`
  - see also https://github.com/dotnet/efcore/pull/22279#discussion_r478674176

nits:
- do not assume `$(TargetFrameworkVersion)` starts with a 'v'; valid w/o it
- add `$(_IsMicrosoftNETCoreApp20OrOlder)` property in OpenAPI targets file
  - evaluate the `Condition` once instead of three times
2020-08-31 11:36:19 -07:00
Artak f891c2b15d
Merge pull request #25256 from dotnet/prkrishn/dotnet-watch
Allow dotnet watch to refresh on changes to .razor files in reference…
2020-08-28 20:23:59 -07:00
Pranav K f733fe9967
Update src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets 2020-08-28 14:09:11 -07:00
Chris Sienkiewicz aa51b8c1d1 Remove unsupported SkipAnalyzers param 2020-08-27 15:57:56 -07:00
Chris Sienkiewicz 866df807a8 Disable compiler warnings during component discovery phase 2020-08-27 15:57:33 -07:00
Chris Sienkiewicz d9590840d9 Pass generators to CSC during component discovery 2020-08-26 18:08:24 -07:00
Pranav K 28e18c3058
Allow dotnet watch to refresh on changes to .razor files in referenced projects
dotnet-watch expects full paths to files to watch in all added items. For files in the current project, this
happens to work. However this does not work very well for files in referenced projects. Using the FullPath metadata
does not work during global evaluation, but we're able to do this in a target.

This change adds extensibility to the dotnet-watch tool that allows calling a target as part of "watch" evaluation.

Fixes https://github.com/dotnet/aspnetcore/issues/22219
2020-08-25 16:03:32 -07:00
Pranav K 134850b4a2
Update rzc to ne5.0 (#25111) 2020-08-22 02:44:08 +00:00
Pranav K 3e8c5c48f0
Add support for views + SingleFileExe (#24925)
* Add support for views + SingleFileExe
2020-08-20 19:46:58 -07:00
Brennan df04381411
Quarantine flaky Razor Integration tests (#25043) 2020-08-19 14:34:12 -07:00
Martin Costello b22512de0e
Right-size Lists when created (#23714)
Create new instances of List<T> with an appropriate capacity for the items that will be added.
Use Array.Empty<T>() where appropriate, rather than create an empty list and then return it.
2020-08-19 09:45:52 -07:00
Pranav K 2f0cf8d3e9
Add support for views + SingleFileExe 2020-08-18 17:52:37 -07:00
Pranav Krishnamoorthy 4e57d1b041
Merged PR 9371: Revive support for globalization and localization in Blazor WASM
Revive support for globalization and localization in Blazor WASM

* Load icu and timezone data files
* Unskip tests

Fixes https://github.com/dotnet/aspnetcore/issues/24174
Fixes https://github.com/dotnet/aspnetcore/issues/22975
Fixes https://github.com/dotnet/aspnetcore/issues/23260
2020-08-17 09:02:18 -07:00
Pranav K 8e5533f2a3
Use BlazorWebAssemblySDK (#24371)
* Use BlazorWebAssemblySDK

* Update projects to use the BlazorSDK
* Remove tasks and targets from RazorSDK
* Remove workarounds from BlazorSDK

* Fixup

* Fixup
2020-08-11 17:29:01 +00:00
Pranav K 059e2fdc49
Remove Internal.AspNetCore.Analyzers (#24693)
* 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
2020-08-11 03:08:55 +00:00
Eric Erhardt d25a7658c8
Remove LinkerWorkaround.xml (#24748)
* 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
2020-08-10 18:59:59 +00:00
dotnet-maestro[bot] f52077f599
[master] Update dependencies from dotnet/runtime dotnet/efcore (#24496)
* React to SDK changes

* Skip instead of quar

* Rely on transitive Microsoft.Bcl.AsyncInterfaces since it's now part of DependencyInjection.
    - This was introduced as part of: https://github.com/dotnet/runtime/pull/40189
    - Prior to this we'd get version conflicts for our referenced Bcl.AsyncInterfaces.

* Update global.json
    - move to RC1 SDK

* React to runtime nullability changes with DataAnnotations.
    - ValidationResult was updated to declare its nullability: a9009db46e (diff-8e86bc8fee3eb0242c5b8368dfabe065)

* Stop using HttpRequestMessage.Properties in favor of non-obsoleted HttpRequestMessage.Options.
    - Introduced in 3eda592cf4

* Stop using more HttpRequestMessage.Properties in Component's web assembly project.
    - Introduced in dotnet/runtime@3eda592

* Update dependencies from https://github.com/dotnet/runtime build 20200804.16

System.ComponentModel.Annotations , System.Diagnostics.DiagnosticSource , System.Diagnostics.EventLog , Microsoft.Extensions.Logging , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging.Configuration , Microsoft.Extensions.Logging.Console , Microsoft.Extensions.Logging.Debug , Microsoft.Extensions.Logging.EventLog , Microsoft.Extensions.Logging.EventSource , Microsoft.Extensions.Logging.TraceSource , Microsoft.Extensions.Options , Microsoft.Extensions.Options.ConfigurationExtensions , Microsoft.Extensions.Options.DataAnnotations , Microsoft.Extensions.Primitives , Microsoft.Extensions.Internal.Transport , Microsoft.Extensions.Http , Microsoft.Extensions.Hosting , Microsoft.Extensions.Caching.Abstractions , Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.CommandLine , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.Configuration.Ini , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.Configuration.UserSecrets , Microsoft.Extensions.Configuration.Xml , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyInjection.Abstractions , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.FileProviders.Abstractions , Microsoft.Extensions.FileProviders.Composite , Microsoft.Extensions.FileProviders.Physical , Microsoft.Extensions.FileSystemGlobbing , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Hosting.Abstractions , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.Platforms , Microsoft.Win32.Registry , Microsoft.Win32.SystemEvents , Microsoft.NETCore.App.Internal , Microsoft.NETCore.App.Ref , System.Drawing.Common , System.Text.Encodings.Web , System.Text.Json , System.Threading.Channels , System.Windows.Extensions , System.ServiceProcess.ServiceController , System.Security.Principal.Windows , System.IO.Pipelines , System.Net.Http.Json , System.Net.Http.WinHttpHandler , System.Net.WebSockets.WebSocketProtocol , System.Reflection.Metadata , System.Resources.Extensions , System.Runtime.CompilerServices.Unsafe , System.Security.AccessControl , System.Security.Cryptography.Cng , System.Security.Cryptography.Pkcs , System.Security.Cryptography.Xml , System.Security.Permissions
 From Version 5.0.0-rc.1.20370.4 -> To Version 5.0.0-rc.1.20404.16

* Ignitor to 5.0

* Constants

* Update dependencies from https://github.com/dotnet/efcore build 20200805.3

Microsoft.EntityFrameworkCore.Tools , Microsoft.EntityFrameworkCore.SqlServer , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.InMemory
 From Version 5.0.0-rc.1.20372.13 -> To Version 5.0.0-rc.1.20405.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Pranav K <prkrishn@hotmail.com>
Co-authored-by: wtgodbe <wigodbe@microsoft.com>
Co-authored-by: N. Taylor Mullen <nimullen@microsoft.com>
Co-authored-by: Justin Kotalik <jukotali@microsoft.com>
2020-08-05 18:42:25 -07:00
Doug Bunting e13368391b
Keep `@(Reference)` metadata when creating `@(ProjectReference)` items (#21567)
- #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
2020-08-04 10:05:55 -07:00
Pranav K f495fcb151
Avoid doing unncecessary work when generating component declaration files. (#24445)
The output of the declaration file for Razor components are unaffected by all inputs other than the input .razor file.
Consequently we can avoid regenerating these files if the output is newer than the input. This is the same heuristic we apply to Blazor WebAsssembly's
compression artifacts.

This PR combines these two improvements for a ~90ms (10%) improvement in the inner loop.

```
       17 ms  GenerateBlazorWebAssemblyBootJson          1 calls
       22 ms  Copy                                       8 calls
       39 ms  ProcessFrameworkReferences                 1 calls
       40 ms  RazorTagHelper                             1 calls
       51 ms  ResolveAssemblyReference                   1 calls
       70 ms  GetFileHash                                1 calls
       80 ms  RazorGenerate                              2 calls
      111 ms  Csc                                        2 calls

      Time Elapsed 00:00:00.95
```

```
       17 ms  GenerateBlazorWebAssemblyBootJson          1 calls
       21 ms  Copy                                       8 calls
       37 ms  ProcessFrameworkReferences                 1 calls
       51 ms  ResolveAssemblyReference                   1 calls
       70 ms  Csc                                        1 calls
       72 ms  GetFileHash                                1 calls
       79 ms  RazorGenerate                              2 calls

Time Elapsed 00:00:00.86
```

In after: Csc calls reduced to one, RazorTagHelper call removed.
2020-07-31 20:40:52 +00:00
Safia Abdalla d6ed98044d
Merge branch 'master' into merge/release/5.0-preview8-to-master 2020-07-30 10:54:18 -07:00
Javier Calvarro Nelson 3cf39cf7e1
Update the templates CSS to leverage CSS isolation (#24380)
* Template changes

* Template changes + scope computation update

* Template updates

* tmp

* Fix style path

* Webassembly template changes

* Update tests

* Undo blazor.server.js changes

* WebAssembly cleanups

* Undo unwanted change

* Undo another unwanted change

* Fix server-side login combinator

* update tests, switch from app to div id=app
2020-07-28 15:29:57 -07:00
Tanay Parikh ed9925d21f Merge branch 'merge/release/5.0-preview8-to-master' of https://github.com/dotnet-maestro-bot/AspNetCore into merge/release/5.0-preview8-to-master 2020-07-27 09:31:46 -07:00
Steve Sanderson eb8764e80f
CSS scoping deep combinators (#24289)
* Support deep combinators with CSS scoping

* Update CSS scope computation
2020-07-24 14:51:30 -07:00
Javier Calvarro Nelson b326be1710
[Blazor] Wires up CSS isolation (#24221) (#24271)
* 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.
2020-07-24 08:42:35 -07:00
Javier Calvarro Nelson 3a819929a7
[Blazor] Wires up CSS isolation (#24221)
* 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.
2020-07-24 09:02:36 +02:00
Safia Abdalla 537ab96eb2
Merge branch 'master' into merge/release/5.0-preview8-to-master 2020-07-21 01:40:02 +00:00
Pranav K e822f5f12d
Create a Blazor WebAssembly SDK (#24044) 2020-07-20 13:25:49 -07:00
Stephen Halter 30c33aad11
Quarantine flaky tests (#23995) 2020-07-16 11:47:47 -07:00
Eric Erhardt 427bfc8d6b
Default new runtime feature switches (#23932) (#23987)
* 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.

Fix #23716

* PR feedback
2020-07-15 21:48:12 -07:00
Eric Erhardt 7b42cf1275
Default new runtime feature switches (#23932)
* 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.

Fix #23716

* PR feedback
2020-07-16 01:19:07 +00:00
Brennan f0bb1315cc
Quarantine Publish_WithoutLinkerAndCompression_UpdatesFilesWhenSourcesChange (#23900) 2020-07-13 18:18:25 -07:00
Pranav K 69ec50bfd8
Increase test timeouts (#23868) 2020-07-13 21:58:54 +00:00
Steve Sanderson 90b697f92e
Razor compiler emit CSS scope attributes (#23703) 2020-07-13 17:27:27 +01:00
Brennan dbfdc5c87b
Update StaticWebAssetsIntegrationTest.cs (#23859) 2020-07-10 15:34:26 -07:00
Safia Abdalla bbc116254a
Add framework support for lazy-loading assemblies on route change (#23290)
* Add framework support for lazy-loading assemblies on route change
* Configure lazy-loaded assemblies in WebAssemblyLazyLoadDefinition
* Move tests to WebAssembly-only scenarios
* Refactor RouteTableFactory and add WebAssemblyDynamicResourceLoader
* Address feedback from peer review
* Rename 'dynamicAssembly' to 'lazyAssembly' and address peer review
* Add sample with loading state
* Update Router API and assembly loading tests
* Support and test cancellation and pre-rendering
* Apply suggestions from code review
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Spurce up API and add tests for pre-rendering scenario
* Use CT instead of CTS in NavigationContext
* Address feedback from peer review
* Remove extra test file and update Router
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
2020-07-08 18:16:47 -07:00
Doug Bunting 16be480616
Quarantine tests and bump Helix timeouts (#23762)
- see #23756 and #23757 for more info on quarantined tests
- see #23760 for more info on Helix timeouts
2020-07-07 19:56:30 -07:00
Eric Erhardt cc3c1d0e74
Remove unnecessary entries in LinkerWorkaround for WASM. (#23747)
* The underlying Json issue is fixed.
* The X509 issue is not an issue when TrimMode is set to link (which is it now by default).

Contributes to #23262
2020-07-08 01:00:21 +00:00
Pranav K 80de1e7588
Quarantine test (#23636) 2020-07-06 15:49:33 +00:00
Pranav K de034feb98
Merge branch 'master' into merge/release/5.0-preview7-to-master 2020-07-05 20:54:56 -07:00
Pranav K 499a3bcdc1
Add support for gzip compression during build and publish (#23611)
* Add support for gzip compression during build and publish

3.2 shipped with gzip compression during build and publish. During the port to 5.0, the build and publish
pipeline was different and ended up only during brotli compression during publish. However, during build
the app size is now up to 20MB. Statically compressing runtime assets during build reduces the payload size
to about 8.5 MB. This should help with faster initial boot ups and perception.

* Quarantine test

* More quarantine
2020-07-03 17:20:17 -07:00
Pranav K 9a4e6cf97c
Merge remote-tracking branch 'origin/release/5.0-preview7' 2020-07-02 11:42:14 -07:00
Pranav K dc4670e8d5
Merge pull request #23427 from dotnet-maestro-bot/merge/release/5.0-preview7-to-master
[automated] Merge branch 'release/5.0-preview7' => 'master'
2020-07-01 07:27:53 -07:00
Pranav K 8768cab874
Use linker extensibility to enable better trimming (#23512)
* Use linker extensibility to enable better trimming

* Configure TrimmerDefaults=link if unspecified
* Allow Microsoft.AspNetCore.* and Microsoft.Extensions.* packages to be trimmed.

* Make producing the trimmer root descriptor more incremental
2020-06-30 20:39:58 -07:00
Pranav K 71e388eab7
Unquaratine blazor template tests (#23521)
* Ensure BlazorWebAssembly.js is present

* Unquaratine blazor template tests

* The failure issue https://github.com/dotnet/aspnetcore/issues/20479 was resolved, but the assembly level quarantine was
missed being removed.
* Use shorter project file names to avoid long path issues.
* Update blazorwasm template tests to react to net5 updates

* Update src/ProjectTemplates/Shared/ProjectFactoryFixture.cs
2020-06-30 21:58:54 +00:00
Pranav K 3fe6b07412
Ensure BlazorWebAssembly.js is present (#23518) 2020-06-30 11:38:20 -07:00