Exemplo n.º 1
0
        /// <summary>
        /// Create RestoreRequests for msbuild based projects or solutions.
        /// </summary>
        /// <param name="providerCache">Shared resource providers.</param>
        /// <param name="projectProvider">Request provider.</param>
        /// <param name="settings">Solution or project level nuget.config settings.</param>
        public MSBuildCachedRequestProvider(
            RestoreCommandProvidersCache providerCache,
            MSBuildProjectReferenceProvider projectProvider,
            Configuration.ISettings settings)
            : base(providerCache)
        {
            if (providerCache == null)
            {
                throw new ArgumentNullException(nameof(providerCache));
            }

            if (projectProvider == null)
            {
                throw new ArgumentNullException(nameof(projectProvider));
            }

            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            _providerCache   = providerCache;
            _projectProvider = projectProvider;
            _settings        = settings;
        }
        public void MSBuildProjectReferenceProvider_EmptyFile()
        {
            // Arrange
            var lines = new List <string>();

            // Act
            var provider = new MSBuildProjectReferenceProvider(lines);

            // Assert
            Assert.Equal(0, provider.GetReferences("testpath").Count);
            Assert.Equal(0, provider.GetEntryPoints().Count);
        }
        public void MSBuildProjectReferenceProvider_NoEdges()
        {
            // Arrange
            var lines = new List <string>();

            lines.Add("#:/tmp/project1.csproj");
            lines.Add("#:/tmp/project2.csproj");

            // Act
            var provider = new MSBuildProjectReferenceProvider(lines);

            // Assert
            Assert.Equal(1, provider.GetReferences("/tmp/project1.csproj").Count);
            Assert.Equal(1, provider.GetReferences("/tmp/project2.csproj").Count);
            Assert.Equal("/tmp/project1.csproj", provider.GetReferences("/tmp/project1.csproj").Single().MSBuildProjectPath);
            Assert.Null(provider.GetReferences("/tmp/project1.csproj").Single().PackageSpecPath);
            Assert.Equal(2, provider.GetEntryPoints().Count);
        }
        public void MSBuildProjectReferenceProvider_FindProjectJson()
        {
            using (var workingDir = TestFileSystemUtility.CreateRandomTestFolder())
            {
                // Arrange
                var project1Dir = Path.Combine(workingDir, "project1");
                Directory.CreateDirectory(project1Dir);
                var project1Json = Path.Combine(project1Dir, "project.json");
                var project1proj = Path.Combine(project1Dir, "project1.csproj");

                var project2Dir = Path.Combine(workingDir, "project2");
                Directory.CreateDirectory(project2Dir);
                var project2Json = Path.Combine(project2Dir, "project2.project.json");
                var project2proj = Path.Combine(project2Dir, "project2.csproj");

                File.WriteAllText(project1Json, ProjectJson);
                File.WriteAllText(project2Json, ProjectJson);
                File.WriteAllText(project1proj, string.Empty);
                File.WriteAllText(project2proj, string.Empty);

                var lines = new List <string>();
                lines.Add($"#:{project1proj}");
                lines.Add($"{project1proj}|{project2proj}");

                // Act
                var provider = new MSBuildProjectReferenceProvider(lines);

                var references = provider.GetReferences(project1proj);
                var root       = references.Where(file => file.ExternalProjectReferences.Count > 0).Single();
                var child      = references.Where(file => file.ExternalProjectReferences.Count == 0).Single();

                // Assert
                Assert.Equal(1, provider.GetEntryPoints().Count);
                Assert.Equal(project1Json, root.PackageSpec.FilePath);
                Assert.Equal(project2Json, child.PackageSpec.FilePath);
                Assert.Equal(project1proj, root.MSBuildProjectPath);
                Assert.Equal(project2proj, child.MSBuildProjectPath);
            }
        }
 public PackageRestoreInputs()
 {
     ProjectReferenceLookup = new MSBuildProjectReferenceProvider(Enumerable.Empty <string>());
 }