This change ports the existing Blazor component compiler features to
work on top of the Razor compiler. These new features are on once Razor
Language version is set to V3 or higher.
The tests and code for the old Blazor compiler were added to this repo
in previous changes. This change adds the necessary enabling features,
and gets the tests working.
Code generation for tests tests is identical with a few exceptions.
Design time directives now include line mappings (as they should). The
infrastructure seems to prefer windows style line-endings whereas the
Blazor code did the opposite. I plan to leave this alone unless it's a
problem for testing on *nix.
IR Generation will be cosmetically different due to different node names
and formatting. Structure should generally be the same.
----
In order to implement this support, I had to add the following core
features.
Configuring passes/engine-features based on the langauge version. This
required revisiting a *lot* of old tests and forcing them to use a
version appropriate Razor engine. A lot of our tests for legacy things
were using new versions of the language :(.
Configuring passes/engine-features to switch on/off depending on the
document kind.
Configuring directives depending on the file-kind. Directives are a
parser feature, so this decision needs to be made before the IR phase.
Directives that are specific to a file kind will override directives
that are not - this allows components to customize templates for
instance.
Adding functions/inherits/implements directive as mainline features that
are always on in V3. I'm not quite motivated to do this yet for
typeparam, but we might end up there. Remember that directives are
reserved words in Razor.
\n\nCommit migrated from a04addb86f
The issue is that the hosted service would not be registered if other
hosted services are present. The fix is to use TryAddEnumble so that we
allow multipled `IHostedService`s but not multiple instances of
the same type.
\n\nCommit migrated from a2f28147c2
* Support installing Community, Professional, or Enterprise versions of VS.
* Remove messages about build agents.
* Add examples to docs and the help output.
This change cleans up the intermediate node types that we have so far
for components and changes the naming, visibility, etc to match our
existing nodes.
The next change will integrate these types with the IR lowering process.
\n\nCommit migrated from 34cf523c0d
Changes:
* Build installer projects in parallel.
* Use `ProjectReference` to ferry bits between installer projects.
* Don't build wixproj to a unified output directory. This was only done to simplify finding file paths to MSI's built by other projects, but ProjectRef solves that.
* Add a VS solution for working on wixproj and the associated C++ custom actions.
* To make wixproj work in VS, I replaced default globs with listing .wxs and .wxl files in the wixproj file.
* Add a target to copy the installers to the artifacts directory according to the layout described in /docs/Artifacts.md
The following package archives which are no longer used by partner teams. It is expected that these will be replaced by targeting packs.
* LZMA (was used by dotnet-cli)
* Package zips (ended up not getting used by anyone)
* Compat package zips (was used by Azure Web Apps)
Update the build scripts to support building subfolders or subgroups of projects
* Add build scripts for ci
* Remove obsolete scripts
* Add flags like --test and --pack to control running just test or packaging
* Add flags like --managed and --native to control building sub-types of projects
* Remove KoreBuild bootstrapper flags
* Update to extensions 3.0.0-preview.18619.1 (needed to get a fix for aspnet/Extensions#815 to make this change work on MSBuild.exe)
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