public void WillChoosePackageWithSmallestNumberOfAssembliesFromMultipleMatches() { var packages = new List <IPackage> { PackageUtility.CreatePackage(AssemblyCommon, "1.0", assemblyReferences: new List <string>() { AssemblyCommonDll }), PackageUtility.CreatePackage("Assembly.Other", "1.0", assemblyReferences: new List <string>() { AssemblyCommonDll, "Assembly.Other.dll" }) }; var assemblies = new List <string>() { AssemblyCommonDll }; var filesystem = new MockFileSystem(); var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), filesystem, new Mock <IConsole>().Object); var resolved = assemblyResolver.GetAssemblyToPackageMapping(false); resolved.OutputPackageConfigFile(); Assert.AreEqual(1, filesystem.Paths.Count); var file = new PackageReferenceFile(filesystem, string.Concat(filesystem.Root, "packages.config")); Assert.AreEqual(1, file.GetPackageReferences().Count()); Assert.AreEqual(true, file.EntryExists(AssemblyCommon, SemanticVersion.Parse("1.0"))); }
private void CreatePackagesConfig(ICollection<IPackage> packagesToAdd, FrameworkName targetFramework = null) { _console.WriteLine("Creating {0}", PackageReferenceFilename); var packagesConfig = new PackageReferenceFile(_projectFileSystem, PackageReferenceFilename); foreach (var package in packagesToAdd) { if (!packagesConfig.EntryExists(package.Id, package.Version)) //Note we don't re-add entries that have the wrong targetFramework set { packagesConfig.AddEntry(package.Id, package.Version, false, targetFramework); } } }
private void CreatePackagesConfig(ICollection <IPackage> packagesToAdd, FrameworkName targetFramework) { _console.WriteLine("Creating {0}", PackageReferenceFilename); var packagesConfig = new PackageReferenceFile(_projectFileSystem, PackageReferenceFilename); foreach (var package in packagesToAdd) { if (!packagesConfig.EntryExists(package.Id, package.Version)) //Note we don't re-add entries that have the wrong targetFramework set { packagesConfig.AddEntry(package.Id, package.Version, false, targetFramework); } } }
private void CreateNuGetScaffolding(SharedPackageRepository sharedPackagesRepository, List <ManifestDependency> manifestDependencies, IEnumerable <KeyValuePair <string, List <IPackage> > > resolvedMappings, FileInfo projectFileInfo, Project project, List <string> projectDependencies) { //Now, create the packages.config for the resolved packages, and update the repositories.config Console.WriteLine("Creating packages.config"); var packagesConfigFilePath = Path.Combine(projectFileInfo.Directory.FullName + "\\", "packages.config"); var packagesConfig = new PackageReferenceFile(packagesConfigFilePath); foreach (var referenceMapping in resolvedMappings) { //TODO We shouldnt need to resolve this twice.... var package = referenceMapping.Value.OrderBy(p => p.GetFiles().Count()).First(); if (!packagesConfig.EntryExists(package.Id, package.Version)) { packagesConfig.AddEntry(package.Id, package.Version); } if (NuSpec && manifestDependencies.All(m => m.Id != package.Id)) { manifestDependencies.Add(new ManifestDependency { Id = package.Id }); } } //This is messy...refactor //For any resolved project dependencies, add a manifest dependency if we are doing nuspecs if (NuSpec) { foreach (var projectDependency in projectDependencies) { if (manifestDependencies.All(m => m.Id != projectDependency)) { manifestDependencies.Add(new ManifestDependency { Id = projectDependency }); } } } //Register the packages.config sharedPackagesRepository.RegisterRepository(packagesConfigFilePath); //Add the packages.config to the project content, otherwise later versions of the VSIX fail... if (!project.GetItems("None").Any(i => i.UnevaluatedInclude.Equals("packages.config"))) { project.Xml.AddItemGroup().AddItem("None", "packages.config"); project.Save(); } }
public void CreatePackageFile() { var packagesFile = Path.Combine(_fileSystem.CurrentDirectory, _fileSystem.PackagesFile); var packageReferenceFile = new PackageReferenceFile(packagesFile); var packagesFolder = Path.Combine(_fileSystem.CurrentDirectory, _fileSystem.PackagesFolder); var repository = new LocalPackageRepository(packagesFolder); var newestPackages = repository.GetPackages().GroupBy(p => p.Id) .Select(g => g.OrderByDescending(p => p.Version).FirstOrDefault()); if (!newestPackages.Any()) { _logger.Info("No packages found!"); return; } _logger.InfoFormat("{0} {1}...", (File.Exists(packagesFile) ? "Updating" : "Creating"), _fileSystem.PackagesFile); foreach (var package in newestPackages) { var newestFramework = GetNewestSupportedFramework(package); if (!packageReferenceFile.EntryExists(package.Id, package.Version)) { packageReferenceFile.AddEntry(package.Id, package.Version, package.DevelopmentDependency, newestFramework); if (newestFramework == null) { _logger.InfoFormat("Added {0} (v{1}) to {2}", package.Id, package.Version, _fileSystem.PackagesFile); } else { _logger.InfoFormat("Added {0} (v{1}, .NET {2}) to {3}", package.Id, package.Version, newestFramework.Version, _fileSystem.PackagesFile); } continue; } _logger.InfoFormat("Skipped {0} because it already exists.", package.Id); } _logger.InfoFormat("Successfully {0} {1}.", (File.Exists(packagesFile) ? "updated" : "created"), _fileSystem.PackagesFile); }
public void WillChoosePackageWithSmallestNumberOfAssembliesFromMultipleMatches() { var packages = new List<IPackage> { PackageUtility.CreatePackage(AssemblyCommon, "1.0", assemblyReferences: new List<string>() { AssemblyCommonDll }), PackageUtility.CreatePackage("Assembly.Other", "1.0", assemblyReferences: new List<string>() { AssemblyCommonDll, "Assembly.Other.dll" }) }; var assemblies = new List<string>() { AssemblyCommonDll }; var filesystem = new MockFileSystem(); var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), filesystem, new Mock<IConsole>().Object); var resolved = assemblyResolver.GetAssemblyToPackageMapping(false); resolved.OutputPackageConfigFile(); Assert.AreEqual(1, filesystem.Paths.Count); var file = new PackageReferenceFile(filesystem, string.Concat(filesystem.Root, ".\\packages.config")); Assert.AreEqual(1, file.GetPackageReferences().Count()); Assert.AreEqual(true, file.EntryExists(AssemblyCommon,SemanticVersion.Parse("1.0"))); }
private void CreateNuGetScaffolding(SharedPackageRepository sharedPackagesRepository, List<ManifestDependency> manifestDependencies, IEnumerable<KeyValuePair<string, List<IPackage>>> resolvedMappings, FileInfo projectFileInfo, Project project, List<string> projectDependencies) { //Now, create the packages.config for the resolved packages, and update the repositories.config Console.WriteLine("Creating packages.config"); var packagesConfigFilePath = Path.Combine(projectFileInfo.Directory.FullName + "\\", "packages.config"); var packagesConfig = new PackageReferenceFile(packagesConfigFilePath); foreach (var referenceMapping in resolvedMappings) { //TODO We shouldnt need to resolve this twice.... var package = referenceMapping.Value.OrderBy(p => p.GetFiles().Count()).First(); if (!packagesConfig.EntryExists(package.Id, package.Version)) packagesConfig.AddEntry(package.Id, package.Version); if (NuSpec && manifestDependencies.All(m => m.Id != package.Id)) { manifestDependencies.Add(new ManifestDependency {Id = package.Id}); } } //This is messy...refactor //For any resolved project dependencies, add a manifest dependency if we are doing nuspecs if (NuSpec) { foreach (var projectDependency in projectDependencies) { if (manifestDependencies.All(m => m.Id != projectDependency)) { manifestDependencies.Add(new ManifestDependency {Id = projectDependency}); } } } //Register the packages.config sharedPackagesRepository.RegisterRepository(packagesConfigFilePath); //Add the packages.config to the project content, otherwise later versions of the VSIX fail... if (!project.GetItems("None").Any(i => i.UnevaluatedInclude.Equals("packages.config"))) { project.Xml.AddItemGroup().AddItem("None", "packages.config"); project.Save(); } }