internal static Target ProcessDependencies(string solutionName, PackageSpec project)
{
List <string> packageCollection = new List <string>();
Target projectTarget = new Target();
projectTarget.project = solutionName;
projectTarget.moduleId = $"netframework:{project.Name}";
projectTarget.module = project.Name;
projectTarget.release = project.Version.ToFullString();
projectTarget.dependencies = new List <Dependency>();
// Generate lock file
var lockFileService = new LockFileService();
var lockFile = lockFileService.GetLockFile(project.FilePath, project.RestoreMetadata.OutputPath);
foreach (var targetFramework in project.TargetFrameworks)
{
var lockFileTargetFramework = lockFile.Targets.FirstOrDefault(t => t.TargetFramework.Equals(targetFramework.FrameworkName));
ReportDependency(projectTarget.dependencies, targetFramework, false, packageCollection, lockFileTargetFramework);
}
var packageRepository = new NuGet.LocalPackageRepository($@"{project.BaseDirectory}\packages");
IQueryable <IPackage> packages = packageRepository.GetPackages();
foreach (IPackage package in packages)
{
ReportDependencyPackage(projectTarget.dependencies, package, true, packageCollection);
}
return(projectTarget);
}