예제 #1
0
    private async Task Run()
    {
        Program.DisplayProductInfo();

        Colorful.Console.WriteLine();
        Colorful.Console.WriteLine("Working. Please wait...", Color.GreenYellow);

        var slnFileReader = new SolutionFileReader(SolutionFileName, ProjectsOnly);
        var solution      = slnFileReader.Read();

        var flatList = solution.ExtractNugetPackageAsFlatList();
        var categorizedByPackageNameList = solution.CategorizeByPackageName(flatList);

        var packageNames = new List <string>();

        foreach (var item in categorizedByPackageNameList)
        {
            packageNames.Add(item.Key);
        }

        var latestPackages = await QueryNugetPackageOnlineAsync(packageNames.ToArray(), CliStringFormatter.WriteOnlinePackageProgressHandler);

        Colorful.Console.WriteLine();

        categorizedByPackageNameList = categorizedByPackageNameList.OrderBy(x => x.Key).ToDictionary();

        WriteOutput(categorizedByPackageNameList, solution.SolutionFileName, solution.Projects.Count(), latestPackages);
    }
예제 #2
0
    private async Task Run()
    {
        Program.DisplayProductInfo();

        Colorful.Console.WriteLine();
        Colorful.Console.WriteLine("Working. Please wait...", Color.GreenYellow);

        var slnFileReader = new SolutionFileReader(SolutionFileName, true);
        var solution      = slnFileReader.Read();

        var flatList = solution.ExtractNugetPackageAsFlatList();
        var categorizedByPackageNameList = solution.CategorizeByPackageName(flatList);

        Colorful.Console.WriteLine();

        if (categorizedByPackageNameList.ContainsKey(NugetPackage))
        {
            var projects = categorizedByPackageNameList[NugetPackage];

            if (_returnResults)
            {
                Results = projects;
            }
            else
            {
                WriteOutput(projects, solution.SolutionFileName);
            }

            return;
        }

        Colorful.Console.WriteLine($"'{NugetPackage}' nuget package is not referenced in any project.\n");

        await Task.Delay(1);
    }
        protected override async Task <PackageBase> DoResolve(ObservableCollection <PackageBase> packages, string packageId, int depth, CancellationToken token, FrameworkName targetFramework = null, IVersionSpec versionSpec = null)
        {
            var result = packages.FirstOrDefault(pack => pack.PackageId == packageId);

            if (result != null)
            {
                return(result);
            }

            result = new SolutionPackage(packageId, new SemanticVersion(new Version()))
            {
                Depth = depth
            };
            packages.Add(result);

            if (token.IsCancellationRequested)
            {
                return(null);
            }

            using (var solutionFileReader = new SolutionFileReader(packageId))
            {
                var readSolutionFile = solutionFileReader.ReadSolutionFile();

                var basePath = Path.GetDirectoryName(packageId);
                if (string.IsNullOrEmpty(basePath))
                {
                    return(null);
                }

                foreach (var project in readSolutionFile.Projects)
                {
                    var projectPath      = Path.Combine(basePath, project.RelativePath);
                    var resolutionEngine = m_ResolutionFactory.GetResolutionEngine(projectPath);
                    if (resolutionEngine == null)
                    {
                        continue;
                    }

                    var dependingPackage = await resolutionEngine.Resolve(packages, projectPath, depth + 1, token, targetFramework, versionSpec);

                    result.Dependencies.Add(dependingPackage);

                    if (token.IsCancellationRequested)
                    {
                        break;
                    }
                }
            }
            return(result);
        }
예제 #4
0
    public void WriteNewSlnFile(Sln slnObject)
    {
        _sln     = slnObject;
        _slnFile = new SlnFile();                 // or you can read sln file like below
        using (SolutionFileReader reader = new SolutionFileReader(_sln.ObjectFullPath))
            _slnFile = reader.ReadSolutionFile();
        AddHeaders();
        AddGlobalSections();
        // add projects
        List <SolutionNode> sns = _sln.GetAllSubItemsOf(typeof(SolutionFolder), typeof(ProjectNode));

        foreach (SolutionNode sn in sns)
        {
            _slnFile.Projects.Add(CreateProject(sn));
        }
        using (SolutionFileWriter writer = new SolutionFileWriter(_sln.ObjectFullPath))
            writer.WriteSolutionFile(_slnFile);
    }
    private Solution ReadSolutionStructure()
    {
        var slnFileReader = new SolutionFileReader(SolutionFileName, true);

        try
        {
            var solution = slnFileReader.Read();
            return(solution);
        }
        catch (SolutionFileException)
        {
            throw;
        }
        catch (Exception)
        {
            throw;
        }
    }
예제 #6
0
    private async Task Run()
    {
        Program.DisplayProductInfo();

        var      slnFileReader = new SolutionFileReader(SolutionFileName, ProjectsOnly);
        Solution solution      = null;

        #region Solution file reader execution section
        try
        {
            solution = slnFileReader.Read();

            Colorful.Console.WriteLine();
            Colorful.Console.Write($"{CliStringFormatter.Format15}", "Solution ");
            Colorful.Console.WriteLine($": {solution.SolutionFileName}", Color.PapayaWhip);
            Colorful.Console.Write("Total Projects : ");
            Colorful.Console.WriteLine($"{solution.Projects.Count()}\n", Color.PapayaWhip);

            Colorful.Console.WriteLine();
            Colorful.Console.WriteLine("Working. Please wait...", Color.DeepSkyBlue);
        }
        catch (SolutionFileException)
        {
            throw;
        }
        catch (Exception)
        {
            throw;
        }
        #endregion

        NugetPackageOnlineComparer comparer = null;
        if (ShowNugetPackageUpdates)
        {
            comparer = new NugetPackageOnlineComparer(solution, ShowPreReleaseNugetPackages, CliStringFormatter.WriteOnlinePackageProgressHandler);
            await comparer.Run();
        }

        Colorful.Console.WriteLine();

        WriteFinalizedResultToScreen(solution, comparer?.Result);
    }
    private Task Run()
    {
        Program.DisplayProductInfo();

        var      slnFileReader = new SolutionFileReader(SolutionFileName, true);
        Solution solution;

        #region Solution file reader execution section
        try
        {
            solution = slnFileReader.Read();

            Colorful.Console.WriteLine();
            Colorful.Console.Write($"{CliStringFormatter.Format15}", "Solution ");
            Colorful.Console.WriteLine($": {solution.SolutionFileName}", Color.PapayaWhip);
            Colorful.Console.Write("Total Projects : ");
            Colorful.Console.WriteLine($"{solution.Projects.Count()}\n", Color.PapayaWhip);

            Colorful.Console.WriteLine();
            Colorful.Console.WriteLine("Working. Please wait...", Color.DeepSkyBlue);
        }
        catch (SolutionFileException)
        {
            throw;
        }
        catch (Exception)
        {
            throw;
        }
        #endregion

        Colorful.Console.WriteLine();

        WriteFinalizedResultToScreen(solution);

        return(Task.CompletedTask);
    }