コード例 #1
0
        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);
        }
コード例 #2
0
 public DesignSolutiontGraphNode()
 {
     Package = new SolutionPackage("TestSolution", new SemanticVersion("1.2.3.4"));
 }