@@ -132,27 +132,36 @@ public DependencyManager(string srcDir, IDependencyOptions options, ILogger logg
132132 progressMonitor . UnresolvedReference ( r . Key , r . Value ) ;
133133 }
134134
135- var views = GetFiles ( "*.cshtml" )
136- . Concat ( GetFiles ( "*.razor" ) ) ;
137-
138- if ( views . Any ( ) )
135+ var webViewExtractionOption = Environment . GetEnvironmentVariable ( "CODEQL_EXTRACTOR_CSHARP_STANDALONE_EXTRACT_WEB_VIEWS" ) ;
136+ if ( bool . TryParse ( webViewExtractionOption , out var shouldExtractWebViews ) &&
137+ shouldExtractWebViews )
139138 {
140- // TODO: use SDK specified in global.json
141- // TODO: add feature flag to control razor generation
142- var sdk = new Sdk ( dotnet ) . GetNewestSdk ( ) ;
143- if ( sdk != null )
139+ progressMonitor . LogInfo ( $ "Generating source files from cshtml and razor files.") ;
140+
141+ var views = GetFiles ( "*.cshtml" )
142+ . Concat ( GetFiles ( "*.razor" ) )
143+ . ToArray ( ) ;
144+
145+ if ( views . Length > 0 )
144146 {
145- try
146- {
147- var razor = new Razor ( sdk , dotnet , progressMonitor ) ;
148- razorWorkingDirectory = new TemporaryDirectory ( ComputeTempDirectory ( sourceDir . FullName , "razor" ) ) ;
149- var generatedFiles = razor . GenerateFiles ( views , usedReferences . Keys , razorWorkingDirectory . ToString ( ) ) ;
150- this . allSources . AddRange ( generatedFiles ) ;
151- }
152- catch ( Exception ex )
147+ progressMonitor . LogInfo ( $ "Found { views . Length } cshtml and razor files.") ;
148+
149+ // TODO: use SDK specified in global.json
150+ var sdk = new Sdk ( dotnet ) . GetNewestSdk ( ) ;
151+ if ( sdk != null )
153152 {
154- // It's okay, we tried our best to generate source files from cshtml files.
155- progressMonitor . LogInfo ( $ "Failed to generate source files from cshtml files: { ex . Message } ") ;
153+ try
154+ {
155+ var razor = new Razor ( sdk , dotnet , progressMonitor ) ;
156+ razorWorkingDirectory = new TemporaryDirectory ( ComputeTempDirectory ( sourceDir . FullName , "razor" ) ) ;
157+ var generatedFiles = razor . GenerateFiles ( views , usedReferences . Keys , razorWorkingDirectory . ToString ( ) ) ;
158+ this . allSources . AddRange ( generatedFiles ) ;
159+ }
160+ catch ( Exception ex )
161+ {
162+ // It's okay, we tried our best to generate source files from cshtml files.
163+ progressMonitor . LogInfo ( $ "Failed to generate source files from cshtml files: { ex . Message } ") ;
164+ }
156165 }
157166 }
158167 }
0 commit comments