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); } } } }
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(); } } }
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); }
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); } }