Commit Graph

125 Commits

Author SHA1 Message Date
Pranav K 7144add4ad
Check for ITagHelper in tag helper feature provider (#2602)
Fixes #2482
2018-09-18 16:52:34 -07:00
Pranav K fc86cc3ca1 Allow Invoke \ InvokeAsync methods for a ViewComponent to be defined in base types
Fixes https://github.com/aspnet/Mvc/issues/8397
2018-09-18 13:38:48 -07:00
Marcin Burak 04e58d6ee4 Changed /* */ style comments to // style comments 2018-08-14 11:21:51 -07:00
Ryan Nowak 585e6cd3fe Introduces a 'formatter' for formatting the IR
The new Formatter is used in debugger display, to resolve #2264

The next iteration (assuming we like this) will be to replat our testing
baseline infrastructure on top of this, and then start sharing that with
Blazor - related to #2265.

I found when implementing debugger display that I was duplicating a lot
of details between testing and this.

I also want to convert the Blazor tests to use shared infrastructure.
Right now the Blazor tests use a modified version of the Razor
infrastructure that has different features.
2018-08-13 13:09:49 -07:00
Ryan Brandenburg 1779625d74 Set 2.1 baselines 2018-06-14 16:43:22 -07:00
Ajay Bhargav Baaskaran ad07036020 Use checksum for classname if filepath is null 2018-06-11 08:25:57 -07:00
Pranav K 95835d6c37 Continue generating RelatedAssemblyPart on assembly if GenerateAssemblyInfo=false
Fixes #2257
2018-04-13 16:14:37 -07:00
Ajay Bhargav Baaskaran f8dc5c4702 Obsoleted IRazorEngineBuilder APIs 2018-04-13 12:35:53 -07:00
Ajay Bhargav Baaskaran 5504374125 Preserve directive node diagnostics in document node 2018-04-10 10:24:21 -07:00
Ajay Bhargav Baaskaran 6270c1f47e Merge branch 'rel/vs15.7' into dev 2018-04-05 16:28:17 -07:00
Ryan Nowak d1c0ab587c Add support for type parameters to class nodes
This change will allow someone extending Razor to use generic type
parameters in generated classes.

There's no user-level extensibility provided here yet, as in there is no
language support for adding type parameters.
2018-04-05 15:26:42 -07:00
Ajay Bhargav Baaskaran ae42d7599d Show error if page directive is not at the top of file 2018-04-04 17:27:10 -07:00
Pranav K 954a62c075 Remove EnableDefaultCompiledViewAssemblyLoadBehavior and add a switch to disable generating application part factory attribute 2018-03-22 17:09:53 -07:00
Ajay Bhargav Baaskaran a7178a66bd Show error if page directive is not at the top of file 2018-03-21 11:22:01 -07:00
Pranav K 7ff56dadf4 CodeGen RouteTemplate as a RazorCompiledItemAttribute 2018-03-19 12:37:04 -07:00
Ryan Brandenburg 7a7cc5ab1e Set 2.0 baselines 2018-03-19 10:46:23 -07:00
Pranav K 5f69a01cc5
RazorSdk - Attribute code generation fixes
* Allow the type name for ProvideApplicationPartFactoryAttribute to be specified.

* Generate ReleatedAssemblyAttribute in class library projects
2018-03-14 23:09:28 -07:00
Pranav K 425724ce28 Avoid generating RelatedAssemblyAttribute when RazorSdk isn't in play 2018-03-13 13:54:02 -07:00
Pranav K 483fba5972 Generate application part attributes
* Add support for generating attributes on Razor assembly
* Generate ProvideApplicationPartFactoryAttribute on Razor assembly
* Generate RelatedAssemblyAttribute on application assembly
2018-03-09 14:36:55 -08:00
Ryan Nowak 2f79b90af5 Merge branch 'rel/vs15.7' into dev 2018-03-08 15:49:01 -08:00
Ryan Nowak 989a6c699f Don't add the tag helper provider by default
Since the default tag helper provider is used by MVC then MVC should
include it. Now that Blazor is in the mix we shouldn't include it for
all configurations.
2018-03-08 15:41:34 -08:00
N. Taylor Mullen 5c456fbd04 Merge branch 'rel/vs15.7' into dev
# Conflicts:
#	build/dependencies.props
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshot.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshotManager.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshotWorker.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshotWorkerFactory.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshot.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotUpdateContext.cs
#	src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/Legacy/LegacyTagHelperResolver.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorConfiguration.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorExtension.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorGeneral.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorProjectProperties.cs
#	test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotTest.cs
#	test/Microsoft.VisualStudio.Editor.Razor.Test/Microsoft.VisualStudio.Editor.Razor.Test.csproj
2018-03-05 22:58:07 -08:00
Pranav K 8938f6c8c2 Change the default extension for Razor views to .Views.dll 2018-02-21 11:48:31 -08:00
Ryan Nowak 0b777dad3f Decouple tooling from MVC assemblies 2018-02-19 14:39:19 -08:00
Nate McMaster 13824c418e Catch 15.7 up with dev
This change integrates most of the non-breaking work that we did in 2.1
including the updates to make Razor less coupled to MVC.
2018-02-19 10:46:16 -08:00
Ryan Nowak 45148142ea Fix broken build 2018-02-16 09:43:33 -08:00
Ryan Nowak 56ead8118a Decouple Razor tools from MVC
Adds a loader (with shadow copying in server mode) based on the Roslyn
Analyzer loader design.

Adds some targets to the Razor SDK that we can use to compute the
configuration and extensions.

Passes all of the metadata through to the command line tools so they can
deal with extensions.
2018-02-15 13:31:31 -08:00
N. Taylor Mullen e200b69511 Change IImportProjectFeature to consume RazorProjectItems.
- Updated all implementations of `IImportProjectFeature`; for MVC I went ahead and made a single project item that's always returned for MVC scenarios. That project item is smart about returning its content in a light-weight stream fashion.
- Had to add a `RazorProjectItem` => `RazorSourceDocument` conversion mechanic into `DefaultRazorProjectEngine`.
- Added tests for `DefaultRazorProjectItem.ConvertToSourceDocument`.
- Removed the `ProjectEngine` API from `VisualStudioRazorParser`. This was unrelated but was missed feedback.

#2068
2018-02-15 11:31:18 -08:00
Ryan Nowak 82579b6333 Get rid of RazorConfiguration.DesignTime
This change makes it so that we no longer create 'design time' engines.
The choice of design time or runtime is made when we initiate a code
generation operation.

Options instances are now created as part of the CodeDocument
initialization. Our existing code can still be created using a
RazorEngine so our passes that initialize the options still support the
old code path.
2018-02-13 16:21:18 -08:00
N. Taylor Mullen 3375fc8b99 Change RazorProjectEngine to operate on RazorProjectItems.
- Removed the `Process(string)` overload to make it extra clear that you must operate on project items. This way we also don't need to worry about the various formats of paths that can flow through the system.
- Updated tests to use the new project item format.
- Did a few formatting fixes on unrealted files.

#2049
2018-02-09 17:24:27 -08:00
Ryan Nowak 5b28c06d64
Add prelimianry support for extensions to Razor (#2012)
* Add prelimianry support for extensions to Razor

This PR adds MSBuild insfrastructure to the SDK that can understand
concepts we need to expose to the project, code generator and runtime
like:
- Language version
- Configuration
- Extensions (plugins)

As an example of how this works, I've done the wireup for MVC. This will
now generate assembly attributes in your application that can act as a
source-of-truth for what should be included in runtime compilation, and
it's all based on the project-file. This means that it can be delivered
and configured by packages.

The next step here is to implement a loader for RazorProjectEngine based
on these primitives, and then use it in our CLI tools and MVC.

The next step after that is to expose it in VS and VS4Mac through the
project system.
2018-02-02 17:41:14 -08:00
N. Taylor Mullen c0cb8f009c Update RazorProjectEngine to use RazorConfiguration.
- In this PR we do away with `CreateDesignTime` on the `RazorProjectEngine`. Instead we now have an overload that takes in a configuration and does the right thing.
- Updated `RazorProjectEngineBuilder` to have a configuration.
- Updated `RazorConfiguration` to only have a `Default`. Setting up a razor configuration for design time now requires calling code to construct the configuration manually.
2018-01-29 16:08:17 -08:00
N. Taylor Mullen 771a7e35a4 Add MVC support for RazorProjectEngine.
- Make `RazorProjectEngine` call paths for all feature registrations.
- Add `DefaultMvcImportFeature` for latest and 1.X MVC.
- Ported `AddTargetExtension` and `AddDirective` to `RazorProjectEngineBuilderExtensions`.
- Added tests and a test file system project type.
- Moved obsolete `IRazorEngineBuilder` methods to the bottom of each file. Will actually obsolete the methods once `RazorProjectEngine` is working end-to-end.

#1828
2018-01-25 12:26:11 -08:00
Ryan Nowak b93bab9c04 Remove Get/SetRelativePath 2018-01-05 21:52:59 -08:00
Pranav K 3ae601e4df
Prevent type name collisions when file hierarchy + namespace is identical (#1881)
* Prevent type name collisions when file hierarchy + namespace is identical
2018-01-02 09:41:10 -08:00
Ajay Bhargav Baaskaran 52a06e93bc Added test for DefaultRazorSyntaxFactsService 2017-12-29 17:02:35 -08:00
Ajay Bhargav Baaskaran 6bbd063e26 Use DefaultRazorDiagnostic in DefaultDirectiveSyntaxTreePass 2017-12-14 16:35:13 -08:00
N. Taylor Mullen 4164821e4c Add VS agnostic non-OOP DefaultTagHelperResolver.
- Added tests for the VisualStudio.Editor tag helper resolver.

#1789
2017-12-14 11:28:30 -08:00
Ajay Bhargav Baaskaran 7002dbf20a Added Name and Documentation to DirectiveTokenDescriptor 2017-11-06 10:55:52 -08:00
Nate McMaster 4d737af167 Pin tool and package versions to make builds more repeatable
Part of aspnet/Universe#575
2017-11-01 18:12:08 -07:00
Javier Calvarro Nelson d1cca77852 Update API Check baselines to 2.0.0 2017-09-22 15:33:52 -07:00
N. Taylor Mullen 61260ddf1c Add basic Razor directive completion.
- Added APIs to retrieve an `ITextBuffer` from a `Document` and to retrieve a `RazorCodeDocument` from an `ITextBuffer`.
- The `RazorCodeDocument` from `ITextBuffer` API supports both the new and old Razor parsers so we can transition seamlessly between the two.
- Added logic in the `RazorDirectiveCompletionProvider` to consume descriptions from `DirectiveDescriptor`s. This is then surfaced via tooltips.
- Retrieved currently active `RazorCodeDocument` given a Roslyn buffer and harvested all directives to display in the completion list.
- Added unit tests to validate each new services functionality.

#291
2017-09-05 10:08:31 -07:00
Nate McMaster 471722eba1 Use PackageLineup to manage PackageReference versions
This uses a feature of KoreBuild which will select PackageReference
versions based on a lineup file. This helps unify versions between repos
and helps us ensure we are consistent across multiple components.
2017-08-25 15:44:05 -07:00
Nate McMaster 4cadee2762 Use Directory.Build.props/targets (#1641) 2017-08-23 12:24:57 -07:00
Ajay Bhargav Baaskaran 655a693e4a Make ViewComponentTagHelper use extension intermediate nodes 2017-08-11 12:01:21 -07:00
N. Taylor Mullen 184ab74e68 Don't render view attributes when in design time.
- This is a temporary work around that's needed until we have multi-targeting support in https://github.com/aspnet/Razor/issues/1535.
2017-07-19 09:56:51 -07:00
N. Taylor Mullen 006b4651da Change product code to work with editor expectations.
- Descriptor providers should not be pushing `null` descriptors into the overall list of `TagHelperDescriptor`s; this causes null refs on the editor side of things at design time.
- Expose `FilePath` on `RazorEditorParser` for the editor. The editor currenlty uses the `RazorEditorParser` as a place to hold some state about the Razor document.
2017-07-19 09:56:51 -07:00
N. Taylor Mullen 99ff9d44a3 Update repo to utilize ApiCheck.
- Re-enabled api check for `Microsoft.AspNetCore.Razor` and `Microsoft.AspNetCore.Razor.Runtime`. This resulted in me adding known breaking changes for the packages.
- Added empty baseline files for `Microsoft.AspNetCore.Razor.Language`, `Microsoft.AspNetCore.Mvc.Razor.Extensions` and `Microsoft.CodeAnalysis.Razor`.
- Disabled ApiCheck for `Microsoft.CodeAnalysis.Razor.Workspaces`, `Microsoft.CodeAnalysis.Remote.Razor`, `RazorPageGenerator` and `Microsoft.VisualStudio.LanguageServices.Razor` to prevent ApiCheck warnings about missing baselines.

#1107
2017-07-07 15:59:36 -07:00
Ryan Nowak 9c0a8a5c96 Rename properties on taghelper nodes 2017-07-07 11:32:05 -07:00
Ryan Nowak ff40124594 Convert most of CodeWriter into extensions
We don't really want to ship what we have as a contract. As an emergency
measure we are making it into internal extension methods so we can have
a do-over in 2.1.
2017-07-07 10:55:33 -07:00