| File: GenerateMvcTestManifestTask.cs | Web Access |
| Project: src\aspnetcore\src\Mvc\Mvc.Testing.Tasks\src\Microsoft.AspNetCore.Mvc.Testing.Tasks.csproj (Microsoft.AspNetCore.Mvc.Testing.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using System.IO; using System.Runtime.Serialization.Json; using System.Text; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; namespace Microsoft.AspNetCore.Mvc.Testing.Tasks; /// <summary> /// Generate a JSON file mapping assemblies to content root paths. /// </summary> public class GenerateMvcTestManifestTask : Task { /// <summary> /// The path to output the manifest file to. /// </summary> [Required] public string ManifestPath { get; set; } /// <summary> /// A list of content root paths and assembly names to generate the /// manifest from. /// </summary> [Required] public ITaskItem[] Projects { get; set; } /// <inheritdoc /> public override bool Execute() { using var fileStream = File.Create(ManifestPath); var output = new Dictionary<string, string>(); foreach (var project in Projects) { var contentRoot = project.GetMetadata("ContentRoot"); var assemblyName = project.GetMetadata("Identity"); output[assemblyName] = contentRoot; } var serializer = new DataContractJsonSerializer(typeof(Dictionary<string, string>), new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true }); using var writer = JsonReaderWriterFactory.CreateJsonWriter(fileStream, Encoding.UTF8, ownsStream: false, indent: true); serializer.WriteObject(writer, output); return !Log.HasLoggedErrors; } }