Ejemplo n.º 1
0
        public void CanUseNuGetSdkResolver()
        {
            using (ProjectCollection projectCollection = new ProjectCollection())
            {
                BuildOutput buildOutput = BuildOutput.Create();

                projectCollection.RegisterLogger(buildOutput);

                using (PackageRepository.Create(TestRootPath)
                       .Package("Foo.Bar", "1.2.3", out Package package)
                       .FileText(Path.Combine("Sdk", "Sdk.props"), "<Project />")
                       .FileText(Path.Combine("Sdk", "Sdk.targets"), "<Project />"))
                {
                    ProjectCreator projectCreator = ProjectCreator
                                                    .Create(
                        sdk: $"{package.Id}/{package.Version}",
                        projectCollection: projectCollection)
                                                    .Save(GetTempFileName(".csproj"));

                    try
                    {
                        Project unused = projectCreator.Project;
                    }
                    catch (Exception e)
                    {
                        throw new Exception(buildOutput.GetConsoleLog(), e);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void StaticGraphBuildsSucceed(string projectExtension)
        {
            ProjectCreator sdkReference = ProjectCreator.Templates.SdkCsproj(
                Path.Combine(TestRootPath, "sdkstyle", "sdkstyle.csproj"),
                targetFramework: "net472")
                                          .Save();

            ProjectCreator legacyReference = ProjectCreator.Templates.LegacyCsproj(
                Path.Combine(TestRootPath, "legacy", "legacy.csproj"),
                targetFrameworkVersion: "v4.7.2")
                                             .Save();

            ProjectCreator noTargets = ProjectCreator.Templates.NoTargetsProject(
                path: Path.Combine(TestRootPath, "notargets", "notargets.csproj"),
                targetFramework: "net472",
                customAction: creator =>
            {
                creator.ItemProjectReference(sdkReference, referenceOutputAssembly: false);
                creator.ItemProjectReference(legacyReference, referenceOutputAssembly: false);
            }).Save();

            ProjectCreator project = ProjectCreator.Templates.SdkCsproj(
                Path.Combine(TestRootPath, "main", $"main{projectExtension}"),
                targetFramework: "net472",
                projectCreator: creator =>
            {
                creator.ItemProjectReference(noTargets, referenceOutputAssembly: false);
            })
                                     .Save()
                                     .TryBuild("Restore", out bool result, out BuildOutput restoreOutput);

            result.ShouldBeTrue(restoreOutput.GetConsoleLog());

            using (BuildManager buildManager = new BuildManager())
                using (ProjectCollection projectCollection = new ProjectCollection())
                {
                    try
                    {
                        BuildOutput buildOutput = BuildOutput.Create();

                        buildManager.BeginBuild(
                            new BuildParameters(projectCollection)
                        {
                            Loggers         = new[] { buildOutput },
                            IsolateProjects = true,
                        });

                        GraphBuildResult graphResult = buildManager.BuildRequest(
                            new GraphBuildRequestData(
                                new[] { new ProjectGraphEntryPoint(project.FullPath) },
                                new[] { "Build" }));

                        graphResult.OverallResult.ShouldBe(BuildResultCode.Success, buildOutput.GetConsoleLog());
                    }
                    finally
                    {
                        buildManager.EndBuild();
                    }
                }
        }
Ejemplo n.º 3
0
        public void StaticGraphBuildsSucceed(string projectExtension)
        {
            using var collection = new ProjectCollection();

            var sdkReference = ProjectCreator.Templates.SdkCsproj(
                GetTempFileWithExtension(".csproj"),
                projectCollection: collection).Save();

            var legacyReference = ProjectCreator.Templates.LegacyCsproj(
                GetTempFileWithExtension(".csproj"),
                projectCollection: collection).Save();

            var noTargets = ProjectCreator.Templates.NoTargetsProject(
                path: GetTempFileWithExtension(projectExtension),
                targetFramework: "net472",
                projectCollection: collection,
                customAction: creator =>
            {
                creator.ItemProjectReference(sdkReference.Project, referenceOutputAssembly: false);
                creator.ItemProjectReference(legacyReference.Project, referenceOutputAssembly: false);
            }).Save();

            var root = ProjectCreator.Templates.SdkCsproj(
                GetTempFileWithExtension(".csproj"),
                projectCollection: collection,
                targetFramework: "net472",
                projectCreator: creator => { creator.ItemProjectReference(noTargets.Project, referenceOutputAssembly: false); }).Save();

            root.TryBuild("Restore", out var result, out var buildOutput1);

            result.ShouldBeTrue(buildOutput1.GetConsoleLog());

            using var buildManager = new BuildManager();

            try
            {
                var buildOutput = BuildOutput.Create();
                buildManager.BeginBuild(
                    new BuildParameters
                {
                    Loggers         = new[] { buildOutput },
                    IsolateProjects = true
                });

                var graphResult = buildManager.BuildRequest(
                    new GraphBuildRequestData(
                        new[] { new ProjectGraphEntryPoint(root.FullPath) },
                        new[] { "Build" }));

                graphResult.OverallResult.ShouldBe(BuildResultCode.Success);
                buildOutput.Succeeded.ShouldBe(true);
            }
            finally
            {
                buildManager.EndBuild();
            }
        }
        private BuildOutput GetProjectLoggerWithEvents(Action <MockEventSource> eventSourceActions)
        {
            MockEventSource eventSource = new MockEventSource();

            BuildOutput buildOutput = BuildOutput.Create();

            buildOutput.Initialize(eventSource);

            eventSourceActions(eventSource);

            return(buildOutput);
        }
Ejemplo n.º 5
0
        public (IAnalyzerResults AnalyzerResults, BuildOutput Log) Build(string projectFilePath, bool designTime = false)
        {
            var projectAnalyzer = new AnalyzerManager().GetProject(projectFilePath);
            var logger          = BuildOutput.Create();

            projectAnalyzer.AddBuildLogger(logger);
            projectAnalyzer.AddBinaryLogger("build.binlog");
            var analyzerResults = projectAnalyzer.Build(
                new EnvironmentOptions()
            {
                DesignTime = designTime
            }
                );

            return(analyzerResults, logger);
        }
        public static ProjectCreator TryBuild(this ProjectCreator sdkProject, string targetName, out TargetResult result, out BuildOutput output)
        {
            lock (BuildManager.DefaultBuildManager)
            {
                output = BuildOutput.Create();

                var buildResult = BuildManager.DefaultBuildManager.Build(
                    new BuildParameters
                {
                    Loggers = output.AsEnumerable()
                },
                    new BuildRequestData(
                        sdkProject.Project.CreateProjectInstance(),
                        new[] { targetName }));

                result = buildResult.ResultsByTarget[targetName];
                return(sdkProject);
            }
        }