private void PerformPackageUpdates()
        {
            // UpdateAll
            if (!_idSpecified)
            {
                Dictionary <VsProject, List <PackageIdentity> > dictionary = GetInstalledPackagesForAllProjects();
                foreach (KeyValuePair <VsProject, List <PackageIdentity> > entry in dictionary)
                {
                    IEnumerable <VsProject> targetedProjects = new List <VsProject> {
                        entry.Key
                    };
                    List <PackageIdentity> identities = entry.Value;
                    // Execute update for each of the project inside the solution
                    foreach (PackageIdentity identity in identities)
                    {
                        // Find packages update
                        PackageIdentity update = PowerShellPackage.GetLastestUpdateForPackage(ActiveSourceRepository, identity, entry.Key, IncludePrerelease.IsPresent, Safe.IsPresent);
                        ExecuteSinglePackageAction(update, targetedProjects);
                    }
                }
            }
            else
            {
                // Resolve package Id to be updated from the local repository
                PackageIdentity installedIdentity = new PackageIdentity(Id, null);
                Client.PackageRepositoryHelper.ResolvePackage(V2LocalRepository, installedIdentity, IncludePrerelease.IsPresent);

                Dictionary <VsProject, PackageIdentity> dictionary = GetInstalledPackageWithId(Id);
                // If package Id exists in Packages folder but is not actually installed to the current project, throw.
                if (dictionary.Count == 0)
                {
                    WriteError(string.Format(VsResources.PackageNotInstalledInAnyProject, Id));
                }

                foreach (KeyValuePair <VsProject, PackageIdentity> entry in dictionary)
                {
                    IEnumerable <VsProject> targetedProjects = new List <VsProject> {
                        entry.Key
                    };
                    PackageIdentity identity = entry.Value;
                    PackageIdentity update   = null;
                    // Find package update
                    if (!string.IsNullOrEmpty(Version))
                    {
                        NuGetVersion nVersion;
                        if (IsVersionEnum)
                        {
                            nVersion = PowerShellPackage.GetUpdateVersionForDependentPackage(ActiveSourceRepository, identity, UpdateVersionEnum, entry.Key.GetSupportedFrameworks(), IncludePrerelease.IsPresent);
                        }
                        else
                        {
                            nVersion = PowerShellPackage.GetNuGetVersionFromString(Version);
                        }

                        if (nVersion != null)
                        {
                            PackageIdentity pIdentity = new PackageIdentity(Id, nVersion);
                            update = Client.PackageRepositoryHelper.ResolvePackage(ActiveSourceRepository, V2LocalRepository, pIdentity, IncludePrerelease.IsPresent);
                        }
                    }
                    else
                    {
                        update = PowerShellPackage.GetLastestUpdateForPackage(ActiveSourceRepository, identity, entry.Key, IncludePrerelease.IsPresent, Safe.IsPresent);
                        if (update.Version <= identity.Version)
                        {
                            update = null;
                            Log(MessageLevel.Info, Resources.Cmdlet_NoPackageUpdates);
                        }
                    }

                    ExecuteSinglePackageAction(update, targetedProjects);
                }
            }
        }