public void ViewParsing(bool designTime) { // Arrange var chunkTreeCache = new DefaultChunkTreeCache(new TestFileProvider()); var resolver = new TagHelperDescriptorResolver(designTime: false); var razorHost = new MvcRazorHost(chunkTreeCache, resolver) { DesignTimeMode = designTime }; var assembly = typeof(RazorTests).GetTypeInfo().Assembly; var assemblyName = assembly.GetName().Name; var stream = assembly.GetManifestResourceStream($"{assemblyName}.compiler.resources.RazorTests.TestFile.cshtml"); GeneratorResults result; // Act using (Collector.StartCollection()) { result = razorHost.GenerateCode("test/path", stream); } // Assert Assert.Empty(result.ErrorSink.Errors); Assert.Empty(result.ParserErrors); Assert.True(result.Success); }
internal MvcRazorHost(ICodeTreeCache codeTreeCache, RazorPathNormalizer pathNormalizer) : base(new CSharpRazorCodeLanguage()) { _pathNormalizer = pathNormalizer; _baseType = BaseType; _codeTreeCache = codeTreeCache; TagHelperDescriptorResolver = new TagHelperDescriptorResolver(); DefaultBaseClass = BaseType + "<" + DefaultModel + ">"; DefaultNamespace = "Asp"; // Enable instrumentation by default to allow precompiled views to work with BrowserLink. EnableInstrumentation = true; GeneratedClassContext = new GeneratedClassContext( executeMethodName: "ExecuteAsync", writeMethodName: "Write", writeLiteralMethodName: "WriteLiteral", writeToMethodName: "WriteTo", writeLiteralToMethodName: "WriteLiteralTo", templateTypeName: "Microsoft.AspNet.Mvc.Razor.HelperResult", defineSectionMethodName: "DefineSection", generatedTagHelperContext: new GeneratedTagHelperContext { ExecutionContextTypeName = typeof(TagHelperExecutionContext).FullName, ExecutionContextAddMethodName = nameof(TagHelperExecutionContext.Add), ExecutionContextAddTagHelperAttributeMethodName = nameof(TagHelperExecutionContext.AddTagHelperAttribute), ExecutionContextAddHtmlAttributeMethodName = nameof(TagHelperExecutionContext.AddHtmlAttribute), ExecutionContextOutputPropertyName = nameof(TagHelperExecutionContext.Output), RunnerTypeName = typeof(TagHelperRunner).FullName, RunnerRunAsyncMethodName = nameof(TagHelperRunner.RunAsync), ScopeManagerTypeName = typeof(TagHelperScopeManager).FullName, ScopeManagerBeginMethodName = nameof(TagHelperScopeManager.Begin), ScopeManagerEndMethodName = nameof(TagHelperScopeManager.End), TagHelperContentTypeName = nameof(TagHelperContent), // Can't use nameof because RazorPage is not accessible here. CreateTagHelperMethodName = "CreateTagHelper", StartTagHelperWritingScopeMethodName = "StartTagHelperWritingScope", EndTagHelperWritingScopeMethodName = "EndTagHelperWritingScope", WriteTagHelperAsyncMethodName = "WriteTagHelperAsync", WriteTagHelperToAsyncMethodName = "WriteTagHelperToAsync", // Can't use nameof because IHtmlHelper is (also) not accessible here. MarkAsHtmlEncodedMethodName = HtmlHelperPropertyName + ".Raw", }) { ResolveUrlMethodName = "Href", BeginContextMethodName = "BeginContext", EndContextMethodName = "EndContext" }; foreach (var ns in _defaultNamespaces) { NamespaceImports.Add(ns); } }
public CompositeTagHelperDescriptorResolver( TagHelperDescriptorResolver tagHelperDescriptorResolver, ViewComponentTagHelperDescriptorResolver viewComponentTagHelperDescriptorResolver) { _tagHelperDescriptorResolver = tagHelperDescriptorResolver; _viewComponentTagHelperDescriptorResolver = viewComponentTagHelperDescriptorResolver; }
protected IMvcRazorHost GetRazorHost() { var descriptorResolver = new TagHelperDescriptorResolver(TagHelperTypeResolver, designTime: false); return(new MvcRazorHost(new DefaultChunkTreeCache(FileProvider)) { TagHelperDescriptorResolver = descriptorResolver }); }
/// <summary> /// Initializes a new instance of <see cref="MvcRazorHost"/> using the specified <paramref name="fileSystem"/>. /// </summary> /// <param name="fileSystem">A <see cref="IFileSystem"/> rooted at the application base path.</param> public MvcRazorHost(IFileSystem fileSystem) : base(new CSharpRazorCodeLanguage()) { _fileSystem = fileSystem; _baseType = BaseType; TagHelperDescriptorResolver = new TagHelperDescriptorResolver(); DefaultBaseClass = BaseType + '<' + DefaultModel + '>'; DefaultNamespace = "Asp"; // Enable instrumentation by default to allow precompiled views to work with BrowserLink. EnableInstrumentation = true; GeneratedClassContext = new GeneratedClassContext( executeMethodName: "ExecuteAsync", writeMethodName: "Write", writeLiteralMethodName: "WriteLiteral", writeToMethodName: "WriteTo", writeLiteralToMethodName: "WriteLiteralTo", templateTypeName: "Microsoft.AspNet.Mvc.Razor.HelperResult", defineSectionMethodName: "DefineSection", generatedTagHelperContext: new GeneratedTagHelperContext { ExecutionContextTypeName = typeof(TagHelperExecutionContext).FullName, ExecutionContextAddMethodName = nameof(TagHelperExecutionContext.Add), ExecutionContextAddTagHelperAttributeMethodName = nameof(TagHelperExecutionContext.AddTagHelperAttribute), ExecutionContextAddHtmlAttributeMethodName = nameof(TagHelperExecutionContext.AddHtmlAttribute), ExecutionContextOutputPropertyName = nameof(TagHelperExecutionContext.Output), RunnerTypeName = typeof(TagHelperRunner).FullName, RunnerRunAsyncMethodName = nameof(TagHelperRunner.RunAsync), ScopeManagerTypeName = typeof(TagHelperScopeManager).FullName, ScopeManagerBeginMethodName = nameof(TagHelperScopeManager.Begin), ScopeManagerEndMethodName = nameof(TagHelperScopeManager.End), OutputGenerateStartTagMethodName = nameof(TagHelperOutput.GenerateStartTag), OutputGenerateContentMethodName = nameof(TagHelperOutput.GenerateContent), OutputGenerateEndTagMethodName = nameof(TagHelperOutput.GenerateEndTag), // Can't use nameof because RazorPage is not accessible here. CreateTagHelperMethodName = "CreateTagHelper", StartWritingScopeMethodName = "StartWritingScope", EndWritingScopeMethodName = "EndWritingScope", }) { ResolveUrlMethodName = "Href", BeginContextMethodName = "BeginContext", EndContextMethodName = "EndContext" }; foreach (var ns in _defaultNamespaces) { NamespaceImports.Add(ns); } }
public void TagHelperResolution(bool designTime) { var descriptorResolver = new TagHelperDescriptorResolver(designTime); var errorSink = new ErrorSink(); var addTagHelperDirective = new TagHelperDirectiveDescriptor { DirectiveText = "*, Microsoft.AspNetCore.Mvc.TagHelpers", DirectiveType = TagHelperDirectiveType.AddTagHelper, Location = SourceLocation.Zero }; var resolutionContext = new TagHelperDescriptorResolutionContext( new[] { addTagHelperDirective }, errorSink); IEnumerable <TagHelperDescriptor> descriptors; using (Collector.StartCollection()) { descriptors = descriptorResolver.Resolve(resolutionContext); } Assert.NotEmpty(descriptors); Assert.Empty(errorSink.Errors); }