private string GetLatestVersionOfPackage(string packageId)
 {
     try
     {
         var package = NuGetPackageRepository.FindPackagesById(packageId).First(x => x.IsLatestVersion);
         return(package.Version.ToString());
     }
     catch (Exception)
     {
         var package = CachedRepository.FindPackagesById(packageId)
                       .OrderByDescending(x => x.Version.ToString())
                       .FirstOrDefault();
         if (package != null && package.Version != null)
         {
             return(package.Version.ToString());
         }
         MessageBox.Show(
             "Unable to connect to NuGet and no cached packages found for " + packageId,
             "ServiceStackVS Error",
             MessageBoxButtons.OK,
             MessageBoxIcon.Error,
             MessageBoxDefaultButton.Button1,
             MessageBoxOptions.DefaultDesktopOnly
             );
         throw new WizardBackoutException("Unable to connect to NuGet and no cached packages found for " + packageId);
     }
 }
Exemple #2
0
        public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
        {
            if (runKind != WizardRunKind.AsNewProject)
            {
                return;
            }

            using (var serviceProvider = new ServiceProvider((IServiceProvider)automationObject))
            {
                var componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel));
                using (var container = new CompositionContainer(componentModel.DefaultExportProvider))
                {
                    container.ComposeParts(this);
                }
            }

            string   wizardData = replacementsDictionary["$wizarddata$"];
            XElement element    = XElement.Parse("<WizardData>" + wizardData + "</WizardData>");

            _packagesToLoad = element.ExtractNuGetPackages();
            _rootPackage    = NuGetPackageInstallerMultiProjectWizard.RootNuGetPackage;

            if (!UseParentProjectRootPackage(_rootPackage) && element.HasRootPackage())
            {
                _rootPackage         = element.GetRootPackage();
                _rootPackage.Version = NuGetPackageRepository.GetLatestVersionOfPackage(_rootPackage.Id);
            }
        }
Exemple #3
0
        private bool TryInstallPackageFromCache(Project project, string packageId, string version)
        {
            string userAppData        = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string cachePath          = Path.Combine(userAppData, "NuGet\\Cache");
            bool   cacheExists        = Directory.Exists(cachePath);
            bool   useLatest          = string.IsNullOrEmpty(version) || version == "latest";
            var    latestCachePackage = CachedRepository.FindPackagesById(packageId)
                                        .OrderByDescending(x => x.Version.ToString())
                                        .FirstOrDefault(x => useLatest && x.IsLatestVersion || x.Version.ToString() == version);

            if (!useLatest && latestCachePackage != null)
            {
                InstallPackageFromLocalCache(project, packageId, cachePath, version);
                return(true);
            }

            List <IPackage> latestNugetPackages;

            try
            {
                latestNugetPackages = NuGetPackageRepository.FindPackagesById(packageId).ToList();
            }
            catch (Exception)
            {
                //Nuget down or no connection
                //Try and revert to latest cached packages
                OutputWindowWriter.WriteLine("--- WARNING: Unable to contact NuGet servers. Attempting to use local cache ---");
                if (latestCachePackage == null)
                {
                    OutputWindowWriter.WriteLine("--- ERROR: Unable to install ServiceStack from NuGet or local cache ---");
                    throw new WizardBackoutException("Failed to installed package from cache:" + packageId);
                }
                OutputWindowWriter.WriteLine("--- Installing " + packageId + " - " + latestCachePackage.Version + " from local cache ---");
                InstallPackageFromLocalCache(project, packageId, cachePath, latestCachePackage.Version.ToString());
                return(true);
            }

            if (cacheExists)
            {
                var latestNugetPackage =
                    latestNugetPackages.FirstOrDefault(x => useLatest && x.IsLatestVersion || x.Version.ToString() == version);
                bool useCache = latestCachePackage != null &&
                                latestNugetPackage != null &&
                                latestNugetPackage.Version == latestCachePackage.Version;
                if (useCache)
                {
                    OutputWindowWriter.WriteLine("--- Installing " + packageId + " - " + latestNugetPackage.Version + " ---");
                    InstallPackageFromLocalCache(project, packageId, cachePath, latestNugetPackage.Version.ToString());
                    return(true);
                }

                if (latestNugetPackage == null)
                {
                    throw new ArgumentException("Invalid or unavailable version provided");
                }

                OutputWindowWriter.WriteLine("--- Installing " + packageId + " - " + latestNugetPackage.Version + " ---");
            }
            return(false);
        }
        private string GetLatestVersionOfPackage(string packageId)
        {
            string packageVersion;

            try
            {
                var package = NuGetPackageRepository.FindPackagesById(packageId).First(x => x.IsLatestVersion);
                packageVersion = package.Version.ToString();
            }
            catch (Exception)
            {
                OutputWindowWriter.WriteLine("Unable to get latest version number of '{0}' from NuGet. Falling back to cache.".Fmt(packageId));
                var cachedPackage = CachedRepository.FindPackagesById(packageId).OrderByDescending(x => x.Version).First(x => x.IsLatestVersion);
                packageVersion = cachedPackage.Version.ToString();
            }

            return(packageVersion);
        }
        private string GetLatestVersionOfPackage(string packageId)
        {
            var package = NuGetPackageRepository.FindPackagesById(packageId).First(x => x.IsLatestVersion);

            return(package.Version.ToString());
        }