Commit Graph

38 Commits

Author SHA1 Message Date
Steve Sanderson d793f473c4
Support pseudoelements in CSS scoping (#25270)
* Support pseudoelements in CSS scoping. Fixes #25268

* CR: More test cases

* Another pseudoelement case

* Case insensitivity for single-colon pseudoelements

Not that anybody should ever want to do this

* Avoid an allocation
2020-08-28 08:37:37 -07:00
Steve Sanderson a9b596e091
Prevent @import in scoped CSS (#25196)
* Reject @import rules in scoped CSS files

* CR feedback: Use SourceText

* CR feedback: Another test case

* Use same file reading mechanism as "generate" command
2020-08-25 09:28:14 -07:00
Pranav K 134850b4a2
Update rzc to ne5.0 (#25111) 2020-08-22 02:44:08 +00: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
Tanay Parikh 29ceed2b2a
Razor TagHelperDescriptor Hashing (#24551)
* Razor TagHelperDescriptor Hashing and Caching

1/2 PRs for https://github.com/dotnet/aspnetcore/issues/23170

The other PR will be in aspnetcore-tooling to utilize these changes.

https://github.com/dotnet/aspnetcore-tooling/pull/2307
2020-08-04 13:06:42 -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
Steve Sanderson 5e49fc336e
In CSS scoping, support ::deep alongside other combinators (#24376) 2020-07-29 14:49:50 +01: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
Doug Bunting fb28ce3ec2
Simplify ref/ assembly generation (#24136)
* Simplify ref/ assembly generation
    - followup 1/2 for 5266918ed2
    - correct the Razor.Tools project
      - `%(Reference.Version)` metadata does not bleed through into `@(PackageReference)` items
      - much more work to do so than to add this special case
      - remove `$(Razor_NewtonsoftJsonPackageVersion)`
    - remove RTMVersions project and use RepoTasks instead
      - make it an error if RepoTasks is not restored before anything else builds
- add items and properties for System.Security.AccessControl

nits:
- remove invalid (ignored) metadata in Directory.Build.props and AzureAppServices.SiteExtension project
- improve / extend a couple of comments
- move `@(Reference)` items together in Microsoft.AspNetCore.Razor.Tools
2020-07-21 15:21:30 -07:00
Steve Sanderson 90b697f92e
Razor compiler emit CSS scope attributes (#23703) 2020-07-13 17:27:27 +01:00
Steve Sanderson c5ba43f011
CSS isolation rewriter tool (#23657) 2020-07-08 12:42:22 +01:00
Pranav K 4a93863b8d
Fix the blazorwasm benchmark app (#23498)
Specifying the RID and PublishDir when publishing the driver app causes all sorts of
build issues. This change moves specifying the RID in to the driver app and ensures PublishDir
does not flow to the referenced RazorSDK project.

* Fix docker build
* Update readme typos
2020-06-30 06:31:41 -07:00
Pranav K f6a6e4bd07
Replat blazor on net5 (#23078)
* Replat blazor on net5

* Make all e2e tests pass

* Fixup

* Update js files

* Fixups

* Fixup

* Fixup

* Skip globalization tests

* Undo workarounds

* PR feedback

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

System.ComponentModel.Annotations , System.Diagnostics.DiagnosticSource , System.Diagnostics.EventLog , 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.Logging.Abstractions , Microsoft.Extensions.Logging , Microsoft.Extensions.Internal.Transport , Microsoft.Extensions.Http , 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.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 , Microsoft.Extensions.Hosting.Abstractions , Microsoft.Extensions.Configuration.Xml , 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.ServiceProcess.ServiceController , System.Text.Encodings.Web , System.Text.Json , System.Threading.Channels , System.Windows.Extensions , System.Security.Principal.Windows , System.Security.Permissions , System.Security.Cryptography.Xml , System.IO.Pipelines , System.Net.Http.Json , System.Net.Http.WinHttpHandler , System.Net.WebSockets.WebSocketProtocol , System.Reflection.Metadata , System.Runtime.CompilerServices.Unsafe , System.Security.Cryptography.Cng , System.Security.Cryptography.Pkcs
 From Version 5.0.0-preview.7.20321.2 -> To Version 5.0.0-preview.7.20322.6

* Update js file

* Fix version

* Fixup

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
2020-06-23 18:19:55 -07:00
Pranav K 0a42cca945
Razor SDK build ordering issues (#22684)
* Razor SDK build ordering issues

* Build the SDK completely regardless of the MSBuild runtime type
* Split SDK integration tests into a separate project. Clean up project file

* Add project to sln

* Update Microsoft.NET.Sdk.Razor.csproj

* Fixup tests

* Avoid rebuilding dependencies if they appear up to date. Fixup tests

* Fixup

* Update CSharp.Common.props

* Cleanup the build
2020-06-11 21:16:05 +00:00
dotnet-maestro[bot] cdb87ee776
[master] Update dependencies from dotnet/runtime (#22571)
* Update dependencies from https://github.com/dotnet/runtime build 20200605.1

System.ComponentModel.Annotations , System.Diagnostics.DiagnosticSource , System.Diagnostics.EventLog , 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.Logging , Microsoft.Extensions.Internal.Transport , Microsoft.Extensions.Http , Microsoft.Extensions.Hosting.Abstractions , 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.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.Hosting , Microsoft.Extensions.Configuration.Json , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.Win32.Registry , Microsoft.Win32.SystemEvents , Microsoft.NETCore.Platforms , 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.Runtime.CompilerServices.Unsafe , System.Security.Cryptography.Cng , System.Security.Cryptography.Pkcs , System.Security.Cryptography.Xml , System.Security.Permissions
 From Version 5.0.0-preview.7.20303.11 -> To Version 5.0.0-preview.7.20305.1

* Use the array overload of Task.WhenAny

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Ajay Bhargav Baaskaran <ajbaaska@microsoft.com>
2020-06-05 21:22:58 +00:00
John Luo 50f3a16571 aspnetcore-tooling migration fixups 2020-05-26 12:31:49 -07:00
Ryan Brandenburg 36c2448bd3 Serialize project state from VS to project.razor.json (dotnet/aspnetcore-tooling#1711)
Serialize project state to project.razor.json\n\nCommit migrated from fef50ba623
2020-03-31 11:07:08 -07:00
Kevin Pilch a30ed5c841 Update links for repo moves (dotnet/aspnetcore-tooling#1531)
\n\nCommit migrated from 6b8cdab2f3
2020-01-23 12:20:49 -08:00
Ryan Brandenburg 91efa9310f TagHelper QuickInfo (dotnet/aspnetcore-tooling#1443)
Add Hover support for TagHelpers and Components\n\nCommit migrated from c7815ea4f2
2019-12-13 16:58:27 -08:00
Pranav K 054c1c5e59 Retarget rzc.dll to netcoreapp3.0 (dotnet/aspnetcore-tooling#1253)
Based on the discussions here: https://github.com/aspnet/AspNetCore-Internal/issues/3201#issuecomment-539631557

rzc.dll targeting netcoreapp3.1 causes shared fx version conflicts when consumed as a package in the AspNetCore repo.
A fairly trivial workaround is to have it target it netcoreapp3.0 and allow it to roll-forward to the available shared fx.
This follows csc.dll's behavior, as well as solves the version conflict.

Fixes https://github.com/aspnet/AspNetCore-Internal/issues/3201\n\nCommit migrated from 3807c6a6c1
2019-10-18 11:23:05 -07:00
John Luo 1606d9b0d3 Support netcoreapp3.1 TFM (dotnet/aspnetcore-tooling#1122)
* Support netcoreapp3.1 TFM

* Update branding to preview1

* Skip failing 1.1 test
\n\nCommit migrated from 133b252f09
2019-09-12 22:02:18 -07:00
dotnet-maestro[bot] 781743fa30 [release/3.0] Update dependencies from aspnet/Extensions (dotnet/aspnetcore-tooling#975)
* Update dependencies from https://github.com/aspnet/Extensions build 20190815.2

- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview9.19415.2
- Microsoft.AspNetCore.Testing - 3.0.0-preview9.19415.2
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview9.19415.2
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview9.19415.2
- Microsoft.Extensions.NonCapturingTimer.Sources - 3.0.0-preview9.19415.2
- Microsoft.Extensions.Logging - 3.0.0-preview9.19415.2

Dependency coherency updates

- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview9-19414-17 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview9-19414-17 (parent: Microsoft.Extensions.Logging)
- Microsoft.NETCore.App.Ref - 3.0.0-preview9-19414-17 (parent: Microsoft.Extensions.Logging)
- Microsoft.Net.Compilers.Toolset - 3.3.0-beta3-19415-01 (parent: Microsoft.Extensions.Logging)

* Update dependencies from https://github.com/aspnet/Extensions build 20190814.4

- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview9.19414.4
- Microsoft.AspNetCore.Testing - 3.0.0-preview9.19414.4
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview9.19414.4
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview9.19414.4
- Microsoft.Extensions.NonCapturingTimer.Sources - 3.0.0-preview9.19414.4
- Microsoft.Extensions.Logging - 3.0.0-preview9.19414.4

* Update dependencies from https://github.com/aspnet/Extensions build 20190815.2

- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview9.19415.2
- Microsoft.AspNetCore.Testing - 3.0.0-preview9.19415.2
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview9.19415.2
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview9.19415.2
- Microsoft.Extensions.NonCapturingTimer.Sources - 3.0.0-preview9.19415.2
- Microsoft.Extensions.Logging - 3.0.0-preview9.19415.2

* React to namespace removal
\n\nCommit migrated from 543a1ae2a3
2019-08-15 20:12:47 +00:00
N. Taylor Mullen e2d476cc6f Associate C# version with each Razor extension version.
- Roslyn now default to 8.0 C# so it's no longer specified in a users project file. Because of this restriction we can no longer see the projects `LangVersion` when generating Razor files. Meaning, we can't conditionally generate C# 8.0 aware code because our Razor default is not C# 8.0. Therefore, when we detect that the C# lang version hasn't been provided we don't set a C# version and instead rely on what the default configuration for the Razor project is. In practice this looks like:
  - MVC1.X = C# 7.3
  - MVC2.X = C# 7.3
  - MVC Latest = C# 8.0
- I thought about adding a feature flags variant for `RazorCodeGenerationOptions` but decided not to since C# features are all configurable options that are based on more than just the `RazorLangVersion`.
- Added integration tests to ensure that command line builds with implicit `LangVersion`s result in proper C# nullability handling.

aspnet/AspNetCoredotnet/aspnetcore-tooling#12594
\n\nCommit migrated from f039aa9354
2019-08-02 17:14:10 -07:00
Ajay Bhargav Baaskaran 6ad8b96f3e Don't fail the build on warnings (dotnet/aspnetcore-tooling#922)
* Don't fail the build on warnings

* update

* update
\n\nCommit migrated from 450a780f40
2019-08-01 13:16:33 -07:00
N. Taylor Mullen ea5d10509e Expand RazorProject.GetItem to take in FileKinds when getting items.
- Obsoleted old `GetItem` API.
- Updated tests to take new API.
- Added a new test to verify the broken scenario.

dotnet/aspnetcore-tooling#8972
\n\nCommit migrated from 2dd34b8dd8
2019-04-02 13:32:35 -07:00
Ajay Bhargav Baaskaran 730f3cdc6b Better support for _Imports.razor (dotnet/aspnetcore-tooling#357)
* Better support for _Imports.razor

* Special case component imports when generating code

* Prevent a future VS crash

* Rebased and updated

* update

* Removed unnecessary newline
\n\nCommit migrated from abbfe00bdc
2019-03-26 17:58:37 -07:00
N. Taylor Mullen f33e1fca53 Enforce nullability for user code.
- Expanded the `ProjectWorkspaceStateGenerator` to extract the C# language version when building the `ProjectWorkspaceState`. This approach enables all platforms to get nullability support without any changes (as long as they support `ProjectWorkspaceState`, which they do). Also, Roslyn suggested that we avoid dealing with LangVersion directly because there are several factors that impact its "effective" value on a project when run in tooling.
- Updated the `LinePragma` code generation to include `#nullable restore` and `#nullable disable` lines to allow for project restored nullability state for user code.
- Added a new `RazorProjectEngineBuilderExtensions` class that adds Roslyn specific project engine modifications. In this case it allows us to set the C# language version for a project engine and configure underlying features accordingly.
- Added a `SuppressNullabilityEnforcement` flag that only turns on if C# < 8 is specified.
- Updated LiveShare, VS4Mac and RazorGenerate to understand CSharpLanguageVersion.
- Added a single test output to show the change.

dotnet/aspnetcore-tooling#5092
\n\nCommit migrated from 1df8128b87
2019-03-25 20:26:36 -07:00
Ajay Bhargav Baaskaran 2c39457306 Flow RootNamespace from MSBuild (dotnet/aspnetcore-tooling#331)
- Flow Root namespace through in command line builds

- Flow Root namespace through in design time builds

- Feedback\n\nCommit migrated from 057d4f3570
2019-03-13 14:18:07 -07:00
Ryan Nowak 724178680f Provide a public entry point for Roslyn features
We need to be able to wire up these features from outside of the Razor
repo. For layering reasons this can't be done in the main Razor
assembly, so it can't be done by default.
\n\nCommit migrated from 386e2b3797
2019-01-01 17:51:48 -08:00
Ryan Nowak 14a8159919 Enable component class libraries in SDK
This change contains the enabling features to use Razor Components in a
class library. Currently we require a few workarounds, see the test
project file. This is good enough to get things unblocked.

One part that was needed was to register the correct component features
in the rzc. This is a good example, of why we don't like to add new
features that get registered conditionally, it's error-prone :)

The other part that was needed was to make some of the MVC-related
features for assembly attributes conditional on the TFM. We need to be
able to use the 3.0 (all inclusive) SDK, but without the MVC-related
features. This isn't the right heuristic, but it gets us unblocked.
\n\nCommit migrated from 8dbf02076b
2018-12-28 14:27:33 -08:00
Ryan Nowak 51d19d1745 Code dump of Blazor compiler BindTagHelperDescriptorProvider
This change adds all of the code from the Blazor/Components compiler into
the Razor language assembly. Minimal refactoring or integration work has
been done, that is next :)

All of the code compiles and all unit tests pass, except the one I had
to skip until integration work is done.
\n\nCommit migrated from aa5c82ca5e
2018-12-20 16:04:24 -08:00
Ryan Nowak c37dada0dc Flow FileKind from project items -> code document
This is a bit of a rework of how we initially set this up, but with more
forethought to how this will work in the project system. I have not yet
surfaced this through VS.

My immediate next step is to light up the component integration tests
and something like this is on the critical path to get that work since
we need a way to specify in tests that a document should be treated as
a component.
\n\nCommit migrated from 6b81da3f02
2018-12-18 22:34:14 -08:00
Ryan Nowak 7df54be754 Merged PR 304: Enable local builds with dotnet/Arcade
[WIP] Enable local builds with dotnet/Arcade
\n\nCommit migrated from 409618521f
2018-12-02 00:25:55 +00:00
Ryan Nowak a5ef5133a3 Reorganize source code in preparation to move into aspnet/AspNetCore
Prior to reorganization, this source code was found in https://github.com/aspnet/Razor/tree/dotnet/aspnetcore-tooling@582f3f867eeb8fca00e6b328faf7665c9a98476c
\n\nCommit migrated from 33b287d4a4
2018-11-29 15:13:03 -08:00