2
2
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3
3
4
4
using System . Collections . Generic ;
5
- using System . Diagnostics ;
6
- using System . Linq ;
7
5
using System . Text ;
8
- using System . Threading ;
9
6
using Microsoft . AspNetCore . Mvc . Razor . Extensions ;
10
7
using Microsoft . AspNetCore . Razor . Language ;
11
8
using Microsoft . CodeAnalysis ;
12
- using Microsoft . CodeAnalysis . CSharp ;
13
9
using Microsoft . CodeAnalysis . Razor ;
14
10
15
11
namespace Microsoft . NET . Sdk . Razor . SourceGenerators
@@ -37,7 +33,9 @@ private static string GetIdentifierFromPath(string filePath)
37
33
return builder . ToString ( ) ;
38
34
}
39
35
40
- private static RazorProjectEngine GetDiscoveryProjectEngine ( StaticCompilationTagHelperFeature tagHelperFeature , IEnumerable < MetadataReference > references , IEnumerable < SourceGeneratorProjectItem > items , RazorSourceGenerationOptions razorSourceGeneratorOptions )
36
+ private static RazorProjectEngine GetDeclarationProjectEngine (
37
+ IEnumerable < SourceGeneratorProjectItem > items ,
38
+ RazorSourceGenerationOptions razorSourceGeneratorOptions )
41
39
{
42
40
var fileSystem = new VirtualRazorProjectFileSystem ( ) ;
43
41
foreach ( var item in items )
@@ -56,26 +54,43 @@ private static RazorProjectEngine GetDiscoveryProjectEngine(StaticCompilationTag
56
54
57
55
b . SetRootNamespace ( razorSourceGeneratorOptions . RootNamespace ) ;
58
56
59
- b . Features . Add ( new DefaultMetadataReferenceFeature { References = references . ToList ( ) } ) ;
57
+ CompilerFeatures . Register ( b ) ;
58
+ RazorExtensions . Register ( b ) ;
59
+
60
+ b . SetCSharpLanguageVersion ( razorSourceGeneratorOptions . CSharpLanguageVersion ) ;
61
+ } ) ;
60
62
63
+ return discoveryProjectEngine ;
64
+ }
65
+
66
+ private static RazorProjectEngine GetDiscoveryProjectEngine (
67
+ IReadOnlyList < MetadataReference > references ,
68
+ StaticCompilationTagHelperFeature tagHelperFeature )
69
+ {
70
+ var discoveryProjectEngine = RazorProjectEngine . Create ( RazorConfiguration . Default , new VirtualRazorProjectFileSystem ( ) , b =>
71
+ {
72
+ b . Features . Add ( new DefaultMetadataReferenceFeature { References = references } ) ;
61
73
b . Features . Add ( tagHelperFeature ) ;
62
74
b . Features . Add ( new DefaultTagHelperDescriptorProvider ( ) ) ;
63
75
64
76
CompilerFeatures . Register ( b ) ;
65
77
RazorExtensions . Register ( b ) ;
66
-
67
- b . SetCSharpLanguageVersion ( razorSourceGeneratorOptions . CSharpLanguageVersion ) ;
68
78
} ) ;
69
79
70
80
return discoveryProjectEngine ;
71
81
}
72
82
73
- private static RazorProjectEngine GetGenerationProjectEngine ( IReadOnlyList < TagHelperDescriptor > tagHelpers , IEnumerable < SourceGeneratorProjectItem > items , RazorSourceGenerationOptions razorSourceGeneratorOptions )
83
+ private static RazorProjectEngine GetGenerationProjectEngine (
84
+ IReadOnlyList < TagHelperDescriptor > tagHelpers ,
85
+ SourceGeneratorProjectItem item ,
86
+ IEnumerable < SourceGeneratorProjectItem > imports ,
87
+ RazorSourceGenerationOptions razorSourceGeneratorOptions )
74
88
{
75
89
var fileSystem = new VirtualRazorProjectFileSystem ( ) ;
76
- foreach ( var item in items )
90
+ fileSystem . Add ( item ) ;
91
+ foreach ( var import in imports )
77
92
{
78
- fileSystem . Add ( item ) ;
93
+ fileSystem . Add ( import ) ;
79
94
}
80
95
81
96
var projectEngine = RazorProjectEngine . Create ( razorSourceGeneratorOptions . Configuration , fileSystem , b =>
@@ -99,19 +114,5 @@ private static RazorProjectEngine GetGenerationProjectEngine(IReadOnlyList<TagHe
99
114
100
115
return projectEngine ;
101
116
}
102
-
103
- private static TFeature ? GetFeature < TFeature > ( RazorProjectEngine engine )
104
- {
105
- var count = engine . EngineFeatures . Count ;
106
- for ( var i = 0 ; i < count ; i ++ )
107
- {
108
- if ( engine . EngineFeatures [ i ] is TFeature feature )
109
- {
110
- return feature ;
111
- }
112
- }
113
-
114
- return default ;
115
- }
116
117
}
117
118
}
0 commit comments