private bool TryAddProjectReference([NotNull] FileSystemPath path) { var project = ProjectReferenceResolver.TryResolveProject(path); if (project == null) { return(false); } MyProjectReferences.Add(path, project); return(true); }
private List <int> CalculateProjectDependencies([NotNull] IPsiSourceFile file) => ProjectReferenceResolver .GetProjectDependencies(file.BuildT4Tree()) .Select(it => Host.GetIdByProjectModelElement(it)) .AsList();
public Model.Container GetContainer() { if (IsExcluded()) { Console.WriteLine("Project {0} excluded from task", Options.ProjectName); return(null); } else { var stopWatch = Stopwatch.StartNew(); Console.WriteLine("Processing Project: {0}", Options.ProjectName); if (Options.ProjectDirectory != null) { Console.WriteLine("Using Project Directory: {0}", Options.ProjectDirectory); } Model.Container projectNode = new Model.Container(); projectNode.Name = Options.ProjectUniqueId; projectNode.Version = Options.VersionName; projectNode.SourcePath = Options.TargetPath; projectNode.Type = "Project"; projectNode.OutputPaths = FindOutputPaths(); bool packagesConfigExists = !String.IsNullOrWhiteSpace(Options.PackagesConfigPath) && File.Exists(Options.PackagesConfigPath); bool projectJsonExists = !String.IsNullOrWhiteSpace(Options.ProjectJsonPath) && File.Exists(Options.ProjectJsonPath); bool projectJsonLockExists = !String.IsNullOrWhiteSpace(Options.ProjectJsonLockPath) && File.Exists(Options.ProjectJsonLockPath); bool projectAssetsJsonExists = !String.IsNullOrWhiteSpace(Options.ProjectAssetsJsonPath) && File.Exists(Options.ProjectAssetsJsonPath); if (packagesConfigExists) { Console.WriteLine("Using packages config: " + Options.PackagesConfigPath); var packagesConfigResolver = new PackagesConfigResolver(Options.PackagesConfigPath, NugetService); var packagesConfigResult = packagesConfigResolver.Process(); projectNode.Packages = packagesConfigResult.Packages; projectNode.Dependencies = packagesConfigResult.Dependencies; } else if (projectJsonLockExists) { Console.WriteLine("Using json lock: " + Options.ProjectJsonLockPath); var projectJsonLockResolver = new ProjectLockJsonResolver(Options.ProjectJsonLockPath); var projectJsonLockResult = projectJsonLockResolver.Process(); projectNode.Packages = projectJsonLockResult.Packages; projectNode.Dependencies = projectJsonLockResult.Dependencies; } else if (projectAssetsJsonExists) { Console.WriteLine("Using assets json file: " + Options.ProjectAssetsJsonPath); var projectAssetsJsonResolver = new ProjectAssetsJsonResolver(Options.ProjectAssetsJsonPath); var projectAssetsJsonResult = projectAssetsJsonResolver.Process(); projectNode.Packages = projectAssetsJsonResult.Packages; projectNode.Dependencies = projectAssetsJsonResult.Dependencies; } else if (projectJsonExists) { Console.WriteLine("Using project json: " + Options.ProjectJsonPath); var projectJsonResolver = new ProjectJsonResolver(Options.ProjectName, Options.ProjectJsonPath); var projectJsonResult = projectJsonResolver.Process(); projectNode.Packages = projectJsonResult.Packages; projectNode.Dependencies = projectJsonResult.Dependencies; } else { Console.WriteLine("Attempting reference resolver: " + Options.TargetPath); var referenceResolver = new ProjectReferenceResolver(Options.TargetPath, NugetService); var projectReferencesResult = referenceResolver.Process(); if (projectReferencesResult.Success) { Console.WriteLine("Reference resolver succeeded."); projectNode.Packages = projectReferencesResult.Packages; projectNode.Dependencies = projectReferencesResult.Dependencies; } else { Console.WriteLine("Using backup XML resolver."); var xmlResolver = new ProjectXmlResolver(Options.TargetPath, NugetService); var xmlResult = xmlResolver.Process(); projectNode.Version = xmlResult.ProjectVersion; projectNode.Packages = xmlResult.Packages; projectNode.Dependencies = xmlResult.Dependencies; } } if (projectNode != null && projectNode.Dependencies != null && projectNode.Packages != null) { Console.WriteLine("Found {0} dependencies among {1} packages.", projectNode.Dependencies.Count, projectNode.Packages.Count); } Console.WriteLine("Finished processing project {0} which took {1} ms.", Options.ProjectName, stopWatch.ElapsedMilliseconds); return(projectNode); } }