public void CanFindSingleAssemblyInSinglePackage()
        {
            var fileList = new List<string>() { "Assembly.Common.dll" };
            var packages = new List<IPackage> { PackageUtility.CreatePackage("Assembly.Common", "1.0",assemblyReferences: fileList) };

            var assemblies = new List<string>() { "Assembly.Common.dll" };

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), new Mock<MockFileSystem>().Object, new Mock<IConsole>().Object);
            var resolved = assemblyResolver.ResolveAssemblies(false);
            Assert.AreEqual(1, resolved["Assembly.Common.dll"].Count);
        }
Exemplo n.º 2
0
        public override void ExecuteCommand()
        {
            if (!string.IsNullOrEmpty(Arguments[0]))
            {
                List<string> assemblies = new List<string>();
                if (!Arguments[0].EndsWith(".dll"))
                {
                    fileSystem = CreateFileSystem(Directory.GetCurrentDirectory());
                    assemblies.AddRange(GetAssemblyListFromDirectory());
                }
                else
                {
                    assemblies.Add(Arguments[0]);
                }


                Stopwatch sw = new Stopwatch();
                sw.Start();
                var repository = GetRepository();
                IQueryable<IPackage> packageSource = GetPackageList(repository);
                resolver = new RepositoryAssemblyResolver(assemblies, packageSource, fileSystem, Console);

                Dictionary<string, List<IPackage>> assemblyLocations = new Dictionary<string, List<IPackage>>();
                if (assemblies.Count > 0)
                {
                    assemblyLocations = resolver.ResolveAssemblies(Exhaustive);
                }

                Console.WriteLine();
                sw.Stop();

                if (!OutputPackageConfig)
                {
                    OutputResultsToConsole(sw, assemblyLocations);
                }
                else
                {
                    resolver.OutputPackageConfigFile();
                    OutputErrors(assemblyLocations);
                }

                Environment.Exit(0);

            }
        }
        public void CanFindMultipleAssembliesInMultiplePackagesExhaustively()
        {
            var fileList = new List<string>() { "Assembly.Common.dll", "Assembly.Data.dll" };
            var packages = new List<IPackage> 
            { 
                PackageUtility.CreatePackage("Assembly.Common", "1.2", assemblyReferences: fileList, isLatest: true), 
                PackageUtility.CreatePackage("Assembly.Common", "1.1", assemblyReferences: fileList, isLatest: false), 
                PackageUtility.CreatePackage("Assembly.Common", "1.0", assemblyReferences: fileList, isLatest: false), 
                PackageUtility.CreatePackage("Assembly.Data", "1.0", assemblyReferences: new List<string>() { "Assembly.Data.dll" }, isLatest: true) 
            };

            var assemblies = new List<string>() { "Assembly.Common.dll", "Assembly.Data.dll" };

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), new Mock<MockFileSystem>().Object, new Mock<IConsole>().Object);
            var resolved = assemblyResolver.ResolveAssemblies(true);
            Assert.AreEqual(3, resolved["Assembly.Common.dll"].Count);
            Assert.AreEqual(4, resolved["Assembly.Data.dll"].Count);
        }
Exemplo n.º 4
0
        private Dictionary<string, List<IPackage>> ResolveAssembliesToPackagesConfigFile(FileInfo projectFileInfo, List<string> referenceFiles)
        {
            var results = new Dictionary<string, List<IPackage>>();
            if (referenceFiles.Any())
            {
                Console.WriteLine("Checking feed for {0} references...", referenceFiles.Count);

                IQueryable<IPackage> packageSource = GetRepository().GetPackages().OrderBy(p => p.Id);

                var assemblyResolver = new RepositoryAssemblyResolver(referenceFiles,
                                                                      packageSource,
                                                                      new PhysicalFileSystem(projectFileInfo.Directory.ToString()),
                                                                      Console);
                results = assemblyResolver.ResolveAssemblies(false);
                assemblyResolver.OutputPackageConfigFile();
            }
            else
            {
                Console.WriteWarning("No references found to resolve (all GAC?)");
            }
            return results;
        }
        public void CanOutputPackageConfigWithSingleEntry()
        {
            var fileList = new List<string>() { "Assembly.Common.dll" };
            var packages = new List<IPackage> { PackageUtility.CreatePackage("Assembly.Common", "1.0", assemblyReferences: fileList) };

            var assemblies = new List<string>() { "Assembly.Common.dll" };
            var filesystem = new MockFileSystem();
            //filesystem.Root = @"c:\test";

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), filesystem, new Mock<IConsole>().Object);
            var resolved = assemblyResolver.ResolveAssemblies(false);
            assemblyResolver.OutputPackageConfigFile();
            Assert.AreEqual(1,filesystem.Paths.Count);
            var file = new PackageReferenceFile(filesystem,".\\packages.config");
            Assert.AreEqual(1, file.GetPackageReferences().Count());
        }
        public void WillChoosePackageWithSmallestNumberOfAssembliesFromMultipleMatches()
        {
            var packages = new List<IPackage> 
            {
                PackageUtility.CreatePackage("Assembly.Common", "1.0", assemblyReferences: new List<string>() { "Assembly.Common.dll" }),
                PackageUtility.CreatePackage("Assembly.Other", "1.0", assemblyReferences: new List<string>() { "Assembly.Common.dll", "Assembly.Other.dll" }) 
            };

            var assemblies = new List<string>() { "Assembly.Common.dll" };
            var filesystem = new MockFileSystem();

            var assemblyResolver = new RepositoryAssemblyResolver(assemblies, packages.AsQueryable(), filesystem, new Mock<IConsole>().Object);
            var resolved = assemblyResolver.ResolveAssemblies(false);
            assemblyResolver.OutputPackageConfigFile();
            Assert.AreEqual(1, filesystem.Paths.Count);
            var file = new PackageReferenceFile(filesystem, ".\\packages.config");
            Assert.AreEqual(1, file.GetPackageReferences().Count());
            Assert.AreEqual(true, file.EntryExists("Assembly.Common",SemanticVersion.Parse("1.0")));
        }