nHydrate.Generator.Common.GeneratorFramework.GeneratorHelper.GetFileCount C# (CSharp) Метод

GetFileCount() публичный Метод

public GetFileCount ( IGenerator generator, List excludeList ) : int
generator IGenerator
excludeList List
Результат int
        public int GetFileCount(IGenerator generator, List<Type> excludeList)
        {
            var retval = 0;
            try
            {
                EnvDTEHelper.Instance.ClearCache();
                var globalCacheFile = new GlobalCacheFile();
                _generator = generator;
                var projectGenerators = GetProjectGenerators(generator);
                var generatorTypes = ReflectionHelper.GetCreatableObjectImplementsInterface(typeof(IProjectItemGenerator), AddinAppData.Instance.ExtensionDirectory);
                foreach (var projectGeneratorType in projectGenerators)
                {
                    try
                    {
                        var exclude = false;
                        foreach (var key in globalCacheFile.ExcludeList)
                        {
                            if (key == projectGeneratorType.FullName)
                                exclude = true;
                        }

                        //Check the passed in exclude list
                        if (excludeList.Contains(projectGeneratorType))
                            exclude = true;

                        if (!exclude)
                        {
                            retval += GetFileCount(generator, projectGeneratorType, generatorTypes);
                        }

                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex);
                        MessageBox.Show(ex.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                System.Diagnostics.Debug.Write(string.Empty);
                return retval;

            }
            catch (Exception ex)
            {
                throw;
            }

        }

Same methods

GeneratorHelper::GetFileCount ( IGenerator generator, Type projectGeneratorType, System generatorTypes ) : int
GeneratorHelper::GetFileCount ( IProjectGenerator projectGenerator, System generatorTypes ) : int
GeneratorHelper::GetFileCount ( IProjectItemGenerator projectItemGenerator, System generatorTypes ) : int
GeneratorHelper::GetFileCount ( Type projectItemGeneratorType, System generatorTypes ) : int

Usage Example

Пример #1
0
        private void PerformGeneration(
            nHydrateModel model,
            List <nHydrateGeneratorProject> genList,
            Microsoft.VisualStudio.Modeling.Store store,
            Microsoft.VisualStudio.Modeling.Shell.ModelingDocData docData,
            List <Type> excludeList,
            nHydrate.Generator.Common.GeneratorFramework.GeneratorHelper genHelper)
        {
            _totalFileCount     = 0;
            _processedFileCount = 0;
            var pkey = string.Empty;

            try
            {
                var startTime      = DateTime.Now;
                var isLicenseError = false;
                try
                {
                    //Get the last version we generated on this machine
                    //We will use this to determine if any other generations have been performed on other machines
                    var cacheFile = new nHydrate.Generator.Common.ModelCacheFile(genList.First());
                    var cachedGeneratedVersion = cacheFile.GeneratedVersion;

                    var generatedVersion = cachedGeneratedVersion + 1;

                    pkey = ProgressHelper.ProgressingStarted("Generating...", false, 240000); //Put a 4 minute timer on it
                    foreach (var generator in genList)
                    {
                        var modelRoot = (generator.Model as nHydrate.Generator.Models.ModelRoot);
                        modelRoot.GeneratedVersion = generatedVersion;
                        _totalFileCount           += genHelper.GetFileCount(generator, excludeList);
                    }
                    System.Diagnostics.Debug.WriteLine($"File count: {_totalFileCount}");

                    //Save document
                    var isDirty = 0;
                    docData.IsDirty(out isDirty);
                    if (model.IsDirty || (isDirty != 0))
                    {
                        (docData as nHydrateDocData).Save(docData.FileName, 1, 0);
                    }

                    _startTime = DateTime.Now;
                    foreach (var item in genList)
                    {
                        genHelper.GenerateAll(item, excludeList);
                    }

                    var modelKey = (genList.FirstOrDefault()?.Model as nHydrate.Generator.Models.ModelRoot)?.Key;

                    //Save model statistics
                    var eCount = model.Entities.Count;
                    var fCount = model.Entities.SelectMany(x => x.FieldList).Count();
                    ModelStatsFile.Log(modelKey, eCount, fCount);

                    //Save local copy of last generated version
                    cacheFile.GeneratedVersion = generatedVersion;
                    cacheFile.ModelerVersion   = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                    cacheFile.Save();

                    this.ErrorList = genHelper.GetErrorList().ToList();
                }
                catch (nHydrate.Generator.Common.Exceptions.LicenseException ex)
                {
                    ProgressHelper.ProgressingComplete(pkey);
                    MessageBox.Show("This product is not properly licensed.", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    isLicenseError = true;
                }
                catch (Exception ex)
                {
                    throw;
                }
                finally
                {
                    ProgressHelper.ProgressingComplete(pkey);
                }

                var endTime  = DateTime.Now;
                var duration = endTime.Subtract(startTime);
                #region Show Generation Complete Dialog
                if (!isLicenseError)
                {
                    using (var F = new StatisticsForm())
                    {
                        var text = "The generation was successful.\r\n\r\n";
                        text += "Files generated: " + this.FilesSuccess + "\r\n";
                        text += "Files skipped: " + this.FilesSkipped + "\r\n";
                        text += "Files failed: " + this.FilesFailed + "\r\n";
                        text += "\r\n\r\n";
                        text += "Generation time: " + duration.Hours.ToString("00") + ":" +
                                duration.Minutes.ToString("00") + ":" +
                                duration.Seconds.ToString("00");
                        F.DisplayText       = text;
                        F.GeneratedFileList = this.GeneratedFileList;
                        F.ShowDialog();
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                ProgressHelper.ProgressingComplete(pkey);
                GlobalHelper.ShowError(ex);
            }
        }