private async Task AddFeedPlugin() { if (!NetworkInterface.GetIsNetworkAvailable()) { _uiServices.Show(Resources.NoNetworkConnection, MessageLevel.Warning); return; } PackageInfo selectedPackageInfo = _packageChooser.SelectPluginPackage(); if (selectedPackageInfo != null) { IPackage package = await _packageDownloader.Download( selectedPackageInfo.DownloadUrl, selectedPackageInfo.Id, selectedPackageInfo.Version); if (package != null) { AddSelectedPluginPackage(package); } } }
public string Process(string script, string folder) { var sb = new StringBuilder(); foreach (var line in script.Split(Environment.NewLine.ToCharArray())) { try { if (!line.Trim().StartsWith("#n ")) { sb.AppendLine(ReplaceTokens(line)); continue; } var req = PackageRequirement.Parse(line.Trim().Substring(3)); if (req.NoDepResolve) { if (!_packageDownloader.IsInstalled(req.Name, req.Version, _settings.PackageDir)) { _packageDownloader.Download(req.Name, req.Version, _settings.PackageDir); } continue; } if (!string.IsNullOrEmpty(req.FilePath)) { var spec = _packageDownloader.DownloadNuSpecFromFile(req.FilePath); if (!_packageDownloader.IsInstalled(spec.Id, spec.Version, _settings.PackageDir)) { _packageDownloader.DownloadFromFile(req.FilePath, _settings.PackageDir); } var libPath = $"{_settings.PackageDir}\\{spec.Id}\\{spec.Version}\\lib"; //skip packages that don't contain any dll files. if (!Directory.Exists(libPath)) { continue; } var frameworkdir = Directory.GetDirectories(libPath).FirstOrDefault(d => req.Framework == null ? _settings.SupportedPlatforms.Contains(Path.GetFileName(d)) : d.Contains(req.Framework)); if (string.IsNullOrEmpty(frameworkdir)) { continue; } foreach (var dll in Directory.GetFiles(frameworkdir, "*.dll", SearchOption.AllDirectories)) { _assemblies.Add(Assembly.LoadFile(dll)); } continue; } var pkg = GetPackageRequirements(new List <PackageRequirement>(), req.Name, req.Version, req.Source, req.PreRelease, req.Framework, req.NoDepResolve); foreach (var p in pkg) { //Checking if package is already loaded into assembly. //This should help reduce the extra junk downloaded like .netstandard libraries etc. if (AppDomain.CurrentDomain.GetAssemblies() .FirstOrDefault(a => a.FullName.ToLower().Contains(p.Name.ToLower())) != null) { continue; } if (!_packageDownloader.IsInstalled(p.Name, p.Version, _settings.PackageDir)) { _packageDownloader.Download(p.Name, p.Version, _settings.PackageDir); } var libPath = $"{_settings.PackageDir}\\{p.Name}\\{p.Version}\\lib"; //This helps skip meta packages like NETStandard.Library. if (!Directory.Exists(libPath)) { continue; } var frameworkdir = Directory.GetDirectories(libPath).FirstOrDefault(d => req.Framework == null ? _settings.SupportedPlatforms.Contains(Path.GetFileName(d)) : d.Contains(req.Framework)); if (string.IsNullOrEmpty(frameworkdir)) { continue; } foreach (var dll in Directory.GetFiles(frameworkdir, "*.dll", SearchOption.AllDirectories)) { _assemblies.Add(Assembly.LoadFile(dll)); } } } catch (Exception e) { throw new NuGetException($"Unable to resolve nuget package for {line}", e); } } return(sb.ToString()); }