Example #1
0
        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());
        }
Example #2
0
        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();
            }
        }