public KeyValuePair <string, string>[] Generate() { this.Log().InfoFormat("Xaml Source Generation is using the {0} Xaml Parser", XamlRedirection.XamlConfig.IsUnoXaml ? "Uno.UI" : "System"); var lastBinaryUpdateTime = _forceGeneration ? DateTime.MaxValue : GetLastBinaryUpdateTime(); var resourceKeys = GetResourceKeys(); var files = new XamlFileParser(_excludeXamlNamespaces, _includeXamlNamespaces).ParseFiles(_xamlSourceFiles); var globalStaticResourcesMap = BuildAssemblyGlobalStaticResourcesMap(files); var filesQuery = files .ToArray(); var outputFiles = filesQuery #if !DEBUG .AsParallel() #endif .Select(file => new KeyValuePair <string, string>( file.UniqueID, new XamlFileGenerator( file: file, targetPath: _targetPath, defaultNamespace: _defaultNamespace, medataHelper: _medataHelper, fileUniqueId: file.UniqueID, lastReferenceUpdateTime: lastBinaryUpdateTime, analyzerSuppressions: _analyzerSuppressions, globalStaticResourcesMap: globalStaticResourcesMap, outputSourceComments: _outputSourceComments, resourceKeys: resourceKeys, isUiAutomationMappingEnabled: _isUiAutomationMappingEnabled, uiAutomationMappings: _uiAutomationMappings, defaultLanguage: _defaultLanguage, isWasm: _isWasm, isDebug: _isDebug ) .GenerateFile() ) ) .ToList(); outputFiles.Add(new KeyValuePair <string, string>("GlobalStaticResources", GenerateGlobalResources(files))); return(outputFiles.ToArray()); }
public KeyValuePair <string, string>[] Generate() { var stopwatch = Stopwatch.StartNew(); try { this.Log().InfoFormat("Xaml Source Generation is using the {0} Xaml Parser", XamlRedirection.XamlConfig.IsUnoXaml ? "Uno.UI" : "System"); var lastBinaryUpdateTime = _forceGeneration ? DateTime.MaxValue : GetLastBinaryUpdateTime(); var resourceKeys = GetResourceKeys(); var filesFull = new XamlFileParser(_excludeXamlNamespaces, _includeXamlNamespaces).ParseFiles(_xamlSourceFiles); var files = filesFull .Trim() .OrderBy(f => f.UniqueID) .ToArray(); for (int i = 0; i < files.Length; i++) { files[i].ShortId = i; } TrackStartGeneration(files); var globalStaticResourcesMap = BuildAssemblyGlobalStaticResourcesMap(files, filesFull, _xamlSourceLinks); var filesQuery = files .ToArray(); IEnumerable <XamlFileDefinition> filesToProcess = filesQuery; if (!Debugger.IsAttached) { filesToProcess = filesToProcess.AsParallel(); } var outputFiles = filesToProcess.Select(file => new KeyValuePair <string, string>( file.UniqueID, new XamlFileGenerator( file: file, targetPath: _targetPath, defaultNamespace: _defaultNamespace, metadataHelper: _metadataHelper, fileUniqueId: file.UniqueID, lastReferenceUpdateTime: lastBinaryUpdateTime, analyzerSuppressions: _analyzerSuppressions, globalStaticResourcesMap: globalStaticResourcesMap, outputSourceComments: _outputSourceComments, resourceKeys: resourceKeys, isUiAutomationMappingEnabled: _isUiAutomationMappingEnabled, uiAutomationMappings: _uiAutomationMappings, defaultLanguage: _defaultLanguage, isWasm: _isWasm, isDebug: _isDebug, skipUserControlsInVisualTree: _skipUserControlsInVisualTree, shouldAnnotateGeneratedXaml: _shouldAnnotateGeneratedXaml, isUnoAssembly: IsUnoAssembly ) .GenerateFile() ) ) .ToList(); outputFiles.Add(new KeyValuePair <string, string>("GlobalStaticResources", GenerateGlobalResources(files, globalStaticResourcesMap))); TrackGenerationDone(stopwatch.Elapsed); return(outputFiles.ToArray()); } catch (Exception e) { TrackGenerationFailed(e, stopwatch.Elapsed); throw; } finally { _telemetry.Flush(); } }