private FindPackage ( IPackage>.Func |
||
openPackage | IPackage>.Func | |
packageId | string | |
version | SemanticVersion | |
리턴 | IPackage |
public IPackageObject FindPackage(string path, IPackageReference packageRef) { var repository = new LocalPackageRepository(path); var package = packageRef.Version != null ? repository.FindPackage(packageRef.PackageId, new SemanticVersion(packageRef.Version, packageRef.SpecialVersion), true, true) : repository.FindPackage(packageRef.PackageId); return package == null ? null : new PackageObject(package, packageRef.FrameworkName); }
public IPackageObject FindPackage(string path, IPackageReference packageRef) { Guard.AgainstNullArgument("packageRef", packageRef); var repository = new LocalPackageRepository(path); var package = packageRef.Version != null && !(packageRef.Version.Major == 0 && packageRef.Version.Minor == 0) ? repository.FindPackage(packageRef.PackageId, new SemanticVersion(packageRef.Version, packageRef.SpecialVersion), true, true) : repository.FindPackage(packageRef.PackageId); return package == null ? null : new PackageObject(package, packageRef.FrameworkName); }
public ReferenceAttacher(Solution solution) { _solution = solution; _repository = new LocalPackageRepository(_solution.PackagesFolder()); _packages = new Cache<string, IPackage>(name => _repository.FindPackage(name)); }
public ReferenceAttacher(Solution solution) { _solution = solution; _repository = new LocalPackageRepository(_solution.PackagesFolder()); _packages = new Cache<string, IPackage>(name => _repository.FindPackage(name)); _toolsVersionMatch["4.0"] = "net40"; }
public ReferenceAttacher(Solution solution) { _solution = solution; _repository = new LocalPackageRepository(_solution.PackagesDirectory()); _packages = new Cache<string, IPackage>(name => { try { return _repository.FindPackage(name); } catch (Exception) { return null; } }); _toolsVersionMatch["4.0"] = "net40"; }
public void RunFromGallery() { Directory.CreateDirectory(_targetDirectory); var client = new HttpClient(DeveloperFeed); client.SendingRequest += (sender, e) => { e.Request.Credentials = _credentials; e.Request.PreAuthenticate = true; }; var remoteRepo = new DataServicePackageRepository(client); var targetRepo = new LocalPackageRepository(_targetDirectory); var packages = remoteRepo.GetPackages() .Where(p => p.IsAbsoluteLatestVersion) .ToList(); Parallel.ForEach(packages, new ParallelOptions { MaxDegreeOfParallelism = 4 }, package => { // Some packages are updated without revving the version. We'll only opt not to re-download // a package if an identical version does not exist on disk. var existingPackage = targetRepo.FindPackage(package.Id, package.Version); var dataServicePackage = (DataServicePackage)package; if (existingPackage == null || !existingPackage.GetHash(dataServicePackage.PackageHashAlgorithm).Equals(dataServicePackage.PackageHash, StringComparison.Ordinal)) { Trace.WriteLine(string.Format("{0}: Adding package {1}", DateTime.Now, package.GetFullName())); var packagePath = GetPackagePath(package); using (var input = package.GetStream()) using (var output = File.Create(packagePath)) { input.CopyTo(output); } PurgeOldVersions(targetRepo, package); } }); }
/*<summary> * Using Nuget.Core API, we gather all nuget`s packages that specific project depend on them. * </summary> * <returns></returns> */ private static void addDependencies(string projectName, Module module, string localSource, string[] packageConfigPath, string Configuration) { if (packageConfigPath.Length != 0) { var sharedPackages = new LocalPackageRepository(localSource); var packageReferenceFile = new PackageReferenceFile(packageConfigPath[0]); IEnumerable<PackageReference> projectPackages = packageReferenceFile.GetPackageReferences(); foreach (PackageReference package in projectPackages) { var pack = sharedPackages.FindPackage(package.Id, package.Version); using (Stream packageStream = ((NuGet.OptimizedZipPackage)(pack)).GetStream()) { byte[] buf = new byte[packageStream.Length]; int byteread = packageStream.Read(buf, 0, buf.Length); module.Dependencies.Add(new Dependency { type = "nupkg", md5 = MD5CheckSum.GenerateMD5(buf), sha1 = Sha1Reference.GenerateSHA1(buf), scopes = new List<string> { Configuration }, id = pack.Id + ":" + pack.Version }); } } } }
private static IPackage CreateAndInstallPackage(LocalPackageRepository localRepo, PackageBuilder builder) { Debug.Assert(!string.IsNullOrWhiteSpace(builder.Id), "Package id should be set"); Debug.Assert(builder.Version != null, "Package version should be set"); // Write the next package to the appropriate folder under the local repository // i.e. the location to which it would be installed string fileName = localRepo.PathResolver.GetPackageFileName(builder.Id, builder.Version); string destinationName = Path.Combine(localRepo.Source, fileName); using (Stream fileStream = File.Open(destinationName, FileMode.OpenOrCreate)) { builder.Save(fileStream); } // Check we can retrieve the package from the local repository IPackage newPackage = localRepo.FindPackage(builder.Id, builder.Version); Assert.IsNotNull(newPackage, "Test setup error: failed to retrieve the test NuGet package. Id: {0}, Version: {1}", builder.Id, builder.Version); return newPackage; }
private static void Do(LocalPackageRepository inputRepository, PackageManager inputManager, IPackage package, string cacheDirectory, IEnumerable<string> references, string outputDirectory) { Console.WriteLine("--- Building {0} ---", package.GetFullName()); var solution = new ProjectCollection(); var logger = new ConsoleLogger(); logger.Verbosity = LoggerVerbosity.Minimal; inputManager.InstallPackage(package, false, false); var packageDirectory = Path.Combine(cacheDirectory, package.Id); var moduleDirectory = Directory.GetDirectories(Path.Combine(packageDirectory, "Content", "Modules"))[0]; var moduleName = Path.GetFileName(moduleDirectory); var project = solution.LoadProject(Path.Combine(moduleDirectory, moduleName + ".csproj")); var candidateDirectories = references .Select(r => Path.Combine(cacheDirectory, r)) .Concat(Directory.EnumerateDirectories(cacheDirectory).Where(d => !Path.GetFileName(d).StartsWith("Orchard."))) .Join(new[] { "net40-full", "net40", "net35", "net20", "net", "" }, l => true, r => true, (l, r) => Path.Combine(l, "lib", r)) .Where(Directory.Exists) .ToList(); foreach (var item in GetReferences(project).ToList()) { var referenceName = GetReferenceName(item); var referenceDirectory = candidateDirectories.FirstOrDefault(d => File.Exists(Path.Combine(d, referenceName + ".dll"))); if (referenceDirectory != null) { Console.WriteLine("Replacing reference {0} with {1}", referenceName, referenceDirectory); ReplaceReference(project, item, referenceName, referenceDirectory); } } var dependencies = new List<ManifestDependency>(); foreach (var item in GetModuleReferences(project).ToList()) { var referencedModuleName = item.GetMetadataValue("Name"); var referencedPackageId = "Orchard.Module." + item.GetMetadataValue("Name"); var referencedPackage = inputRepository.FindPackage(referencedPackageId); Console.WriteLine("Depends on {0}", referencedModuleName); dependencies.Add(new ManifestDependency { Id = referencedPackage.Id, Version = "[" + referencedPackage.Version + "]" }); Do(inputRepository, inputManager, referencedPackage, cacheDirectory, references, outputDirectory); ReplaceReference(project, item, referencedModuleName, Path.Combine(cacheDirectory, referencedPackageId, "Content", "Modules", referencedModuleName, "bin")); } if (!File.Exists(Path.Combine(moduleDirectory, "bin", moduleName + ".dll"))) if (!project.Build(logger)) throw new Exception("Failed to build"); var rules = new[] { @"bin\" + moduleName + ".dll", @"Module.txt", @"Placement.info", @"Web.config", @"Content\**", @"Scripts\**", @"Recipes\**", @"Styles\**", @"Views\**" }; var manifest = Manifest.Create(package); manifest.Metadata.DependencySets = new List<ManifestDependencySet> { new ManifestDependencySet { Dependencies = dependencies } }; manifest.Files = rules.Select(r => new ManifestFile { Source = @"Content\Modules\" + moduleName + @"\**\" + r, Target = @"Content\Modules\" + moduleName }).ToList(); var builder = new PackageBuilder(); builder.Populate(manifest.Metadata); builder.PopulateFiles(packageDirectory, manifest.Files); Directory.CreateDirectory(outputDirectory); var outputPackgeFileName = Path.Combine(outputDirectory, manifest.Metadata.Id + "." + manifest.Metadata.Version + ".nupkg"); using (var outputPackageFile = File.Create(outputPackgeFileName)) builder.Save(outputPackageFile); }