Esempio n. 1
0
        public void RestorePackages(Project project)
        {
            string packageReferenceFileFullPath;
            Tuple <string, string> packageReferenceFiles = VsUtility.GetPackageReferenceFileFullPaths(project);

            if (File.Exists(packageReferenceFiles.Item1))
            {
                packageReferenceFileFullPath = packageReferenceFiles.Item1;
            }
            else if (File.Exists(packageReferenceFiles.Item2))
            {
                packageReferenceFileFullPath = packageReferenceFiles.Item2;
            }
            else
            {
                return;
            }

            var packageReferenceFile = new PackageReferenceFile(packageReferenceFileFullPath);
            var packages             = packageReferenceFile.GetPackageReferences().ToList();

            if (packages.Count == 0)
            {
                return;
            }

            var repoSettings = ServiceLocator.GetInstance <IRepositorySettings>();
            var fileSystem   = new PhysicalFileSystem(repoSettings.RepositoryPath);
            var activePackageSourceRepository = ServiceLocator.GetInstance <IPackageRepository>();
            var repository = new AggregateRepository(new[] { MachineCache.Default, activePackageSourceRepository });
            IVsPackageManagerFactory packageManagerFactory = ServiceLocator.GetInstance <IVsPackageManagerFactory>();
            var packageManager = packageManagerFactory.CreatePackageManager(repository, useFallbackForDependencies: false);

            foreach (var package in packages)
            {
                if (IsPackageInstalled(fileSystem, package.Id, package.Version))
                {
                    continue;
                }

                using (packageManager.SourceRepository.StartOperation(RepositoryOperationNames.Restore, package.Id, package.Version.ToString()))
                {
                    var resolvedPackage = PackageHelper.ResolvePackage(
                        packageManager.SourceRepository, package.Id, package.Version);
                    NuGet.Common.PackageExtractor.InstallPackage(packageManager, resolvedPackage);
                }
            }
        }
 public static bool IsSupported(this Project project)
 {
     return(VsUtility.IsSupported(project));
 }
 public static T GetPropertyValue <T>(this Project project, string propertyName)
 {
     return(VsUtility.GetPropertyValue <T>(project, propertyName));
 }
 public static string GetFullPath(this Project project)
 {
     return(VsUtility.GetFullPath(project));
 }
 public static bool GetIsSolutionNodeSelected(this IVsMonitorSelection vsMonitorSelection)
 {
     return(VsUtility.GetIsSolutionNodeSelected(vsMonitorSelection));
 }
 public static Project GetActiveProject(this IVsMonitorSelection vsMonitorSelection)
 {
     return(VsUtility.GetActiveProject(vsMonitorSelection));
 }