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());
        }