示例#1
0
 public void AddDependency(PackageViewModel packageViewModel)
 {
     using (var transaction = UndoRedoService.CreateTransaction())
     {
         DependencyRange dependency;
         if (packageViewModel.Package.Container is SolutionProject project)
         {
             dependency = new DependencyRange(packageViewModel.Name, new PackageVersionRange(packageViewModel.Package.Meta.Version, true), DependencyType.Project)
             {
                 MSBuildProject = project.FullPath,
             };
         }
         else
         {
             dependency = new DependencyRange(packageViewModel.Name, new PackageVersionRange(packageViewModel.Package.Meta.Version, true), DependencyType.Package);
         }
         var reference = new DirectDependencyReferenceViewModel(dependency, this, Dependencies, true);
         UndoRedoService.SetName(transaction, $"Add dependency to package '{reference.Name}'");
     }
 }
示例#2
0
        public async Task AddDependency(PickablePackageViewModel pickablePackageViewModel)
        {
            using (var transaction = UndoRedoService.CreateTransaction())
            {
                var dependency = pickablePackageViewModel.DependencyRange;

                // Check if package isn't a dependency yet
                if (Package.Container.DirectDependencies.Any(x => x.Name == dependency.Name))
                {
                    return;
                }

                var reference = new DirectDependencyReferenceViewModel(dependency, this, Dependencies, true);
                UndoRedoService.SetName(transaction, $"Add dependency to package '{reference.Name}'");

                // Update dependencies with NuGet
                if (Package.Container is SolutionProject project2)
                {
                    var log = new LoggerResult();
                    await VSProjectHelper.RestoreNugetPackages(log, project2.FullPath);

                    PackageSession.UpdateDependencies(project2, false, true);

                    // If the package is not part of session yet, make sure it gets added at this point
                    foreach (var projectDependency in project2.FlattenedDependencies)
                    {
                        if (projectDependency.Package == null && projectDependency.Type == DependencyType.Package)
                        {
                            var packageFile = PackageStore.Instance.GetPackageFileName(projectDependency.Name, new PackageVersionRange(projectDependency.Version));
                            if (packageFile != null && File.Exists(packageFile))
                            {
                                var dependencyPackageViewModel = await Session.AddExistingProject(packageFile);

                                projectDependency.Package = dependencyPackageViewModel.Package;
                            }
                        }
                    }
                }
            }
        }