dotnet / roslyn

The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
https://docs.microsoft.com/dotnet/csharp/roslyn-sdk/
MIT License
18.9k stars 4.01k forks source link

Wrong, Unclear and not helpful WorkspaceDiagnostic errors reported for .csproj projects based on versions below .NET 5.0 #58592

Open abhijitparkhi1983 opened 2 years ago

abhijitparkhi1983 commented 2 years ago

Version Used: 4.0.1

Steps to Reproduce:

  1. We have created a simple console project which is based on .NET 5.0 (5.0.300). This code is built and the binaries are generated over Ubuntu 20.04. The code can be accessed using link https://github.com/abhijitparkhi1983/RoslynTesting.git

  2. The code simply takes in a directory path, initializes MSBuildLocator.RegisterInstance, and then using following code tries to check if any .csproj has any document within for all the csproj files under the directory path:

using (var workspace = MSBuildWorkspace.Create())
{
    Project currentProject = workspace.OpenProjectAsync(projectPath).Result;
    workspace.LoadMetadataForReferencedProjects = true;

    if (currentProject != null && currentProject.Documents.Count() <= 0)
    {
        ImmutableList<WorkspaceDiagnostic> diagnostics = workspace.Diagnostics;
        foreach (var diagnostic in diagnostics)
        {
            Console.WriteLine("Project Issue Diagnostic Issues: " + currentProject.Name + "::::" + diagnostic.Message);
        }
    }

    if (currentProject.Documents.Any())
        Console.WriteLine("Project " + currentProject.Name + " has .cs documents");
    else
        Console.WriteLine("Project " + currentProject.Name + " does not have any .cs documents");
}
  1. But when the code tries to Open a .csproj project which is based on any framework below version .NET 5 (say netcoreapp3.1), there are diagnostic issues reported for example:

Msbuild failed when processing the file '../projects/mvc/razor-class-library/razor-class-library-with-static-files/src/RazorClassLibrary2/RazorClassLiessage: The expression "[Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation(Windows, 7.0)" cannot b is empty. (Parameter 'path') /usr/share/dotnet/sdk/5.0.300/Microsoft.Common.CurrentVersion.targets

  1. The code is running on a Ubuntu 20.4 machine which has .NET 5 SDK, .NET Core SDK 3.1.201 and .NET Core SDK 3.0.100 installed.

  2. If the code is fed with .csproj based on .NET 5.0 or above (branch net5.0 and branch net6.0), it works as expected.

  3. This entire scenario can be reproduced using a sample open source code https://github.com/dodyg/practical-aspnetcore.git (for branch 3.1-LTS or 2.1-LTS we get the above issue and for branch net5.0 it works all well)

  4. I have been searching on various forums to get some hint on how can we resolve this issue.

  5. As suggested on one forum, I have also tried using a method SelectVisualStudioInstance below so that the the framework can be selected at run time

private static VisualStudioInstance SelectVisualStudioInstance(VisualStudioInstance[] visualStudioInstances)
{
    Console.WriteLine("Multiple installs of MSBuild detected please select one:");
    for (int i = 0; i < visualStudioInstances.Length; i++)
    {
        Console.WriteLine($"Instance {i + 1}");
        Console.WriteLine($"    Name: {visualStudioInstances[i].Name}");
        Console.WriteLine($"    Version: {visualStudioInstances[i].Version}");
        Console.WriteLine($"    MSBuild Path: {visualStudioInstances[i].MSBuildPath}");
    }
    while (true)
    {
        var userResponse = Console.ReadLine();
        if (int.TryParse(userResponse, out int instanceNumber) &&
            instanceNumber > 0 &&
            instanceNumber <= visualStudioInstances.Length)
        {
            return visualStudioInstances[instanceNumber - 1];
        }
        Console.WriteLine("Input not accepted, try again.");
    }
}

But if we select the option say framework .NET Core SDK 3.0.100, we still get the same error pointing to

Msbuild failed when processing the file '../projects/mvc/razor-class-library/razor-class-library-with-static-files/src/RazorClassLibrary2/RazorClassLiessage: The expression "[Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation(Windows, 7.0)" cannot b is empty. (Parameter 'path') /usr/share/dotnet/sdk/3.0.100/Microsoft.Common.CurrentVersion.targets ` Also, this method above is at initialization where the csproj frameworks may not be known at run time. So any ways this option does not lead in direction.

  1. Also if we update my code to .NET 6 and run the same code (assuming some thing may have been fixed in this context), we get the same error.

Expected Behavior: There should not be any diagnostic error reported and the csproj project (based on say .NET Core SDK 3.0.100) should be loaded with the required documents.

Actual Behavior: Diagnostic errors. There should not be any Diagnostic errors reported for .csproj files based on .NETCore 3.1 or earlier. And the diagnostic error should point to some definite direction. The above message does not lead any where.

abhijitparkhi1983 commented 2 years ago

A quick update:

I also tried updating the framework of my code from .NET 5 to .NET 6 and tried running it on the open source code https://github.com/dodyg/practical-aspnetcore.git (for branch 3.1-LTS or 2.1-LTS we get the above issue and for branch net5.0 and for net6.0 it works all well)

abhijitparkhi1983 commented 2 years ago

A very Important Update.

I tried setting up a Windows Server 2019 machine and on the machine I have only installed .NET 5 (5.0.302) image

image

With this setup, if I run my code https://github.com/abhijitparkhi1983/RoslynTesting.git which is based on .NET 5 (5.0.300) over the test code https://github.com/dodyg/practical-aspnetcore.git (for branch 3.1-LTS or 2.1-LTS or net5.0 or net5.0) it runs successfully without any error for all the branches.

So looks like the issue which I have reported is only on Ubuntu and not on Windows.

Also, earlier my code https://github.com/abhijitparkhi1983/RoslynTesting.git was based on .NET Core 3.1 (3.1.121) and it all worked well on a Ubuntu machine for the test code https://github.com/dodyg/practical-aspnetcore.git (for branch 3.1-LTS or 2.1-LTS)

abhijitparkhi1983 commented 2 years ago

@jmarolf any updates? Please provide some direction. Its a complete blockage for us

abhijitparkhi1983 commented 2 years ago

Any updates guys. There could be some direction which the team can provide. I have share every possible information and sample code to reproduce the issue.

jmarolf commented 2 years ago

Sorry for the delay, taking a look now. In general, MSBuildWorkspace is not doing anything smart: It is loading the version of MSBuild that you register and attempting to run the design-time-build targets. Problems typically arise when a project type (in this case razor) requires things that are not done in the design-time-build. That said I won't be able to speculate about what this is until I get a binary log of what the workspace is seeing.

As a general strategy, if you need detailed information about what is happening you can use this overload to give a custom logger and get whatever additional information you need.

https://github.com/dotnet/roslyn/blob/12be03b6d58708ce43cacec7c95b91ea5c6bec2c/src/Workspaces/Core/MSBuild/MSBuild/MSBuildWorkspace.cs#L229-L243

My recommendation is to use the binary logger since that will record everything that happened. Here is a quick snippet showing how you would do that:

using Microsoft.CodeAnalysis.MSBuild;
using Microsoft.Extensions.Logging;

string binaryLogPath = "path/to/place/binary/log.binlog";
var binlog = new Build.Logging.BinaryLogger()
{
    Parameters = binaryLogPath,
    Verbosity = Build.Framework.LoggerVerbosity.Diagnostic,
};

Project currentProject = workspace.OpenProjectAsync(projectPath, binlog).Result;

You can then view this log via the viewer here or programmatically read the file

using System;
using Microsoft.Build.Logging.StructuredLogger;

string binLogFilePath = "path/to/place/binary/log.binlog";;

Build buildRoot = BinaryLog.ReadBuild(binLogFilePath);
buildRoot.VisitAllChildren<CscTask>(c => Console.WriteLine(c.CommandLineArguments));

My personal investigation of this issue is going to start by getting a binary log both from the workspace and from a normal build and comparing them to see what if different.

abhijitparkhi1983 commented 2 years ago

Thanks for providing a direction. I will try the binary logger as well

abhijitparkhi1983 commented 2 years ago

@jmarolf do you have any further insights into this issue after using the binary logger?

jmarolf commented 2 years ago

But if we select the option say framework .NET Core SDK 3.0.100, we still get the same error pointing to Msbuild failed when processing the file '../projects/mvc/razor-class-library/razor-class-library-with-static-files/src/RazorClassLibrary2/RazorClassLiessage: The expression "[Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation(Windows, 7.0)" cannot b is empty. (Parameter 'path') /usr/share/dotnet/sdk/3.0.100/Microsoft.Common.CurrentVersion.targets

Initial investigation appears that several projects in that repo fail to build and have even been commented out in their build scripts: https://github.com/dodyg/practical-aspnetcore/blob/3.1-LTS/projects/build.bat#L203-L211. I'll take a look at other projects in the repo but as a general rule: if the project can't build on the machine we certainly cannot load it into the workspace.

jmarolf commented 2 years ago

I am unable to reproduce this issue by running https://github.com/abhijitparkhi1983/RoslynTesting against https://github.com/dodyg/practical-aspnetcore/blob/3.1-LTS.

Simplified the code to just be

using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Build.Locator;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.MSBuild;

namespace RoslynWalker_DotNet5_Sample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            using var workspace = CreateWorkspace();
            string[] projectFilesToLoad = Directory.GetFiles(args[0], "*.csproj", SearchOption.AllDirectories);
            Console.WriteLine("Projects to Parse: " + projectFilesToLoad);
            foreach (var projectFilePath in projectFilesToLoad)
            {
                Console.WriteLine("Loading Project: " + projectFilePath);
                await LoadProjectsAsync(projectFilePath, workspace);
            }
        }

        private static MSBuildWorkspace CreateWorkspace()
        {
            MSBuildLocator.RegisterDefaults();
            var workspace = MSBuildWorkspace.Create();
            workspace.LoadMetadataForReferencedProjects = true;
            workspace.WorkspaceFailed += ReportWorkspaceFailure;
            return workspace;
        }

        private static async Task LoadProjectsAsync(string projectFilePath, MSBuildWorkspace workspace)
        {
            Project project = await workspace.OpenProjectAsync(projectFilePath, Progress.Instance);
            if (project.Documents.Any())
                Console.WriteLine($"Project {project.Name} has .cs documents");
            else
                Console.WriteLine($"Project {project.Name} does not have any .cs documents");
        }

        private static void ReportWorkspaceFailure(object sender, WorkspaceDiagnosticEventArgs e)
        {
            if (e.Diagnostic.Kind == WorkspaceDiagnosticKind.Failure)
            {
                Console.WriteLine($"Project Load Failure: '{e.Diagnostic.Message}'");
            }
            else if (e.Diagnostic.Kind == WorkspaceDiagnosticKind.Warning)
            {
                Console.WriteLine($"Project Load Warning: '{e.Diagnostic.Message}'");
            }
            else
            {
                Console.WriteLine($"Unknown Project Load Issue: '{e.Diagnostic.Message}'");
            }
        }

        private class Progress : IProgress<ProjectLoadProgress>
        {
            public static Progress Instance { get; } = new Progress();

            public void Report(ProjectLoadProgress loadProgress)
            {
                var projectDisplay = Path.GetFileName(loadProgress.FilePath);
                if (loadProgress.TargetFramework != null)
                {
                    projectDisplay += $" ({loadProgress.TargetFramework})";
                }

                Console.WriteLine($"{loadProgress.Operation,-15} {loadProgress.ElapsedTime,-15:m\\:ss\\.fffffff} {projectDisplay}");
            }
        }
    }
}

The only warnings I got were for projects that are not buildable in https://github.com/dodyg/practical-aspnetcore/blob/3.1-LTS

abhijitparkhi1983 commented 2 years ago

@jmarolf hope you tried this out on a linux machine because for a Windows machine, it any ways works. I tried your changed code and it too does not work for https://github.com/dodyg/practical-aspnetcore/blob/3.1-LTS when i try to run it on a Linux machine.

I have attached the log file that i am getting based on your changes. This its running on Ubuntu machine

log.txt e

jmarolf commented 2 years ago

Reactivating to make sure I understand all this. Thanks for the log @abhijitparkhi1983! So they are all failing on ubuntu with this message:

The expression "[Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation(Windows, 7.0)" cannot be evaluated. The path is empty. (Parameter 'path')

This means that the windows build targets cannot be found. I will need to dig into how this is happening. Are you building you console app RoslynWalker_DotNet5_Sample on linux? from WSL I am able to build https://github.com/dodyg/practical-aspnetcore/blob/3.1-LTS with the .NET 3.1 SDK.

Running your sample program with these arguments

> dotnet run --project RoslynWalker_DotNet5_Sample.csproj -- /mnt/d/scratch/practical-aspnetcore/projects/

I get a few failures (the TicketModule.csproj is because I re-wrote things to re-use the workspace, your original code will not have this problem) but do not see what you see:

Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj
Evaluate        0:00.2951559    grpc-client.csproj
Build           0:00.1546605    grpc-client.csproj
Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj' with message: google/protobuf/Empty.proto: (0, 0): File not found.'
Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj' with message: src/billboard.proto: (4, 1): Import "google/protobuf/Empty.proto" was not found or had errors.'
Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj' with message: src/billboard.proto: (7, 20): "google.protobuf.Empty" is not defined.'
Resolve         0:00.0036151    grpc-client.csproj (netcoreapp3.1)
Project grpc-client has .cs documents
Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj
Evaluate        0:00.2966113    grpc-server.csproj
Build           0:00.1536641    grpc-server.csproj
Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj' with message: google/protobuf/Empty.proto: (0, 0): File not found.'
Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj' with message: src/billboard.proto: (4, 1): Import "google/protobuf/Empty.proto" was not found or had errors.'
Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj' with message: src/billboard.proto: (7, 20): "google.protobuf.Empty" is not defined.'
Resolve         0:00.0020967    grpc-server.csproj (netcoreapp3.1)
Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/Host/Host.csproj
Evaluate        0:00.3216315    Host.csproj
Build           0:00.7824238    Host.csproj
Evaluate        0:00.2649387    TicketModule.csproj
Build           0:00.1046565    TicketModule.csproj
Evaluate        0:00.0000881    TicketModule.csproj
Build           0:00.0713353    TicketModule.csproj
Resolve         0:00.0009240    TicketModule.csproj (netcoreapp3.1)
Project Load Warning: 'Found project reference without a matching metadata reference: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/TicketModule/TicketModule.csproj'
Resolve         0:00.4602910    Host.csproj (netcoreapp3.1)
Project Host has .cs documents
Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/TicketModule/TicketModule.csproj
Unhandled exception. System.ArgumentException: 'TicketModule' is already part of the workspace.
   at Microsoft.CodeAnalysis.Workspace.CheckProjectIsNotInCurrentSolution(ProjectId projectId)
   at Microsoft.CodeAnalysis.Workspace.OnProjectAdded_NoLock(ProjectInfo projectInfo, Boolean silent)
   at Microsoft.CodeAnalysis.Workspace.OnProjectAdded(ProjectInfo projectInfo, Boolean silent)
   at Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.OpenProjectAsync(String projectFilePath, ILogger msbuildLogger, IProgress`1 progress, CancellationToken cancellationToken)
   at RoslynWalker_DotNet5_Sample.Program.LoadProjectsAsync(String projectFilePath, MSBuildWorkspace workspace) in /mnt/d/scratch/RoslynTesting/RoslynWalker_DotNet5_Sample/Program.cs:line 36
   at RoslynWalker_DotNet5_Sample.Program.Main(String[] args) in /mnt/d/scratch/RoslynTesting/RoslynWalker_DotNet5_Sample/Program.cs:line 21
   at RoslynWalker_DotNet5_Sample.Program.<Main>(String[] args)

full program output is

here

```bash Projects to Parse: System.String[] Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/anonymous-id/anonymous-id.csproj Evaluate 0:00.4030649 anonymous-id.csproj Build 0:00.6112016 anonymous-id.csproj Resolve 0:00.1604171 anonymous-id.csproj (netcoreapp3.1) Project anonymous-id has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/application-environment/application-environment.csproj Evaluate 0:00.2971913 application-environment.csproj Build 0:00.1669153 application-environment.csproj Resolve 0:00.0026187 application-environment.csproj (netcoreapp3.1) Project application-environment has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/connection-info/connection-info.csproj Evaluate 0:00.3055594 connection-info.csproj Build 0:00.1430473 connection-info.csproj Resolve 0:00.0366285 connection-info.csproj (netcoreapp3.1) Project connection-info has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/device-detection/device-detection.csproj Evaluate 0:00.2767436 device-detection.csproj Build 0:00.1860938 device-detection.csproj Resolve 0:00.0020921 device-detection.csproj (netcoreapp3.1) Project device-detection has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/i-application-lifetime/i-application-lifetime.csproj Evaluate 0:00.2658839 i-application-lifetime.csproj Build 0:00.1869589 i-application-lifetime.csproj Resolve 0:00.0020147 i-application-lifetime.csproj (netcoreapp3.1) Project i-application-lifetime has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/image-sharp/ImageSharp.csproj Evaluate 0:00.5437566 ImageSharp.csproj Build 0:00.1326699 ImageSharp.csproj Resolve 0:00.0022205 ImageSharp.csproj (netcoreapp3.1) Project ImageSharp has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/markdown-server/markdown-server.csproj Evaluate 0:00.2554835 markdown-server.csproj Build 0:00.1482933 markdown-server.csproj Resolve 0:00.0017143 markdown-server.csproj (netcoreapp3.1) Project markdown-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/markdown-server-middleware/markdown-server-middleware.csproj Evaluate 0:00.2512347 markdown-server-middleware.csproj Build 0:00.1344791 markdown-server-middleware.csproj Resolve 0:00.0017486 markdown-server-middleware.csproj (netcoreapp3.1) Project markdown-server-middleware has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/newtonsoft-json/newtonsoft-json.csproj Evaluate 0:00.2545740 newtonsoft-json.csproj Build 0:00.1467173 newtonsoft-json.csproj Resolve 0:00.0016866 newtonsoft-json.csproj (netcoreapp3.1) Project newtonsoft-json has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/password-hasher/password-hasher.csproj Evaluate 0:00.2544920 password-hasher.csproj Build 0:00.1174974 password-hasher.csproj Resolve 0:00.0017679 password-hasher.csproj (netcoreapp3.1) Project password-hasher has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/sse/sse.csproj Evaluate 0:00.2537634 sse.csproj Build 0:00.1408092 sse.csproj Resolve 0:00.0017705 sse.csproj (netcoreapp3.1) Project sse has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/version/version.csproj Evaluate 0:00.2571964 version.csproj Build 0:00.1266464 version.csproj Resolve 0:00.0017098 version.csproj (netcoreapp3.1) Project version has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/basic/hello-world/hello-world.csproj Evaluate 0:00.2626338 hello-world.csproj Build 0:00.1771693 hello-world.csproj Resolve 0:00.0017487 hello-world.csproj (netcoreapp3.1) Project hello-world has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/basic/hello-world-2/hello-world-2.csproj Evaluate 0:00.2585125 hello-world-2.csproj Build 0:00.1522079 hello-world-2.csproj Resolve 0:00.0017311 hello-world-2.csproj (netcoreapp3.1) Project hello-world-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/basic/i-host-environment/i-host-environment.csproj Evaluate 0:00.2364784 i-host-environment.csproj Build 0:00.1629691 i-host-environment.csproj Resolve 0:00.0016799 i-host-environment.csproj (netcoreapp3.1) Project i-host-environment has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/basic/i-webhost-environment/IWebHostEnvironment.csproj Evaluate 0:00.2715537 IWebHostEnvironment.csproj Build 0:00.1514507 IWebHostEnvironment.csproj Resolve 0:00.0017637 IWebHostEnvironment.csproj (netcoreapp3.1) Project IWebHostEnvironment has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/basic/iconfiguration/iconfiguration.csproj Evaluate 0:00.2683572 iconfiguration.csproj Build 0:00.1760868 iconfiguration.csproj Resolve 0:00.0017774 iconfiguration.csproj (netcoreapp3.1) Project iconfiguration has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/Component/Component.csproj Evaluate 0:00.3728361 Component.csproj Build 0:00.6354902 Component.csproj Resolve 0:00.0087883 Component.csproj (netstandard2.1) Project Component has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentEight/ComponentEight.csproj Evaluate 0:00.3734161 ComponentEight.csproj Build 0:00.2583096 ComponentEight.csproj Resolve 0:00.0010370 ComponentEight.csproj (netstandard2.1) Project ComponentEight has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentEleven/ComponentEleven.csproj Evaluate 0:00.3581369 ComponentEleven.csproj Build 0:00.2353028 ComponentEleven.csproj Resolve 0:00.0010250 ComponentEleven.csproj (netstandard2.1) Project ComponentEleven has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentFifteen/ComponentFifteen.csproj Evaluate 0:00.3469939 ComponentFifteen.csproj Build 0:00.2620319 ComponentFifteen.csproj Resolve 0:00.0010054 ComponentFifteen.csproj (netstandard2.1) Project ComponentFifteen has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentFive/ComponentFive.csproj Evaluate 0:00.3308380 ComponentFive.csproj Build 0:00.2334656 ComponentFive.csproj Resolve 0:00.0010219 ComponentFive.csproj (netstandard2.1) Project ComponentFive has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentFour/ComponentFour.csproj Evaluate 0:00.3443758 ComponentFour.csproj Build 0:00.2431846 ComponentFour.csproj Resolve 0:00.0010243 ComponentFour.csproj (netstandard2.1) Project ComponentFour has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentFourteen/ComponentFourteen.csproj Evaluate 0:00.3452551 ComponentFourteen.csproj Build 0:00.2252426 ComponentFourteen.csproj Resolve 0:00.0009991 ComponentFourteen.csproj (netstandard2.1) Project ComponentFourteen has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentNine/ComponentNine.csproj Evaluate 0:00.3425180 ComponentNine.csproj Build 0:00.2286509 ComponentNine.csproj Resolve 0:00.0009859 ComponentNine.csproj (netstandard2.1) Project ComponentNine has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentSeven/ComponentSeven.csproj Evaluate 0:00.3856309 ComponentSeven.csproj Build 0:00.1889993 ComponentSeven.csproj Resolve 0:00.0010116 ComponentSeven.csproj (netstandard2.1) Project ComponentSeven has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentSeventeen/ComponentSeventeen.csproj Evaluate 0:00.3081580 ComponentSeventeen.csproj Build 0:00.2348542 ComponentSeventeen.csproj Resolve 0:00.0009307 ComponentSeventeen.csproj (netstandard2.1) Project ComponentSeventeen has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentSix/ComponentSix.csproj Evaluate 0:00.3757002 ComponentSix.csproj Build 0:00.2219096 ComponentSix.csproj Resolve 0:00.0010283 ComponentSix.csproj (netstandard2.1) Project ComponentSix has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentSixteen/ComponentSixteen.csproj Evaluate 0:00.2761915 ComponentSixteen.csproj Build 0:00.2297538 ComponentSixteen.csproj Resolve 0:00.0008098 ComponentSixteen.csproj (netstandard2.1) Project ComponentSixteen has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentTen/ComponentTen.csproj Evaluate 0:00.3427952 ComponentTen.csproj Build 0:00.2388302 ComponentTen.csproj Resolve 0:00.0009812 ComponentTen.csproj (netstandard2.1) Project ComponentTen has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentThirteen/ComponentThirteen.csproj Evaluate 0:00.3456191 ComponentThirteen.csproj Build 0:00.2232818 ComponentThirteen.csproj Resolve 0:00.0010006 ComponentThirteen.csproj (netstandard2.1) Project ComponentThirteen has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentThree/ComponentThree.csproj Evaluate 0:00.3421910 ComponentThree.csproj Build 0:00.2351521 ComponentThree.csproj Resolve 0:00.0011340 ComponentThree.csproj (netstandard2.1) Project ComponentThree has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentTwelve/ComponentTwelve.csproj Evaluate 0:00.3378424 ComponentTwelve.csproj Build 0:00.2035449 ComponentTwelve.csproj Resolve 0:00.0010055 ComponentTwelve.csproj (netstandard2.1) Project ComponentTwelve has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/ComponentTwo/ComponentTwo.csproj Evaluate 0:00.3574265 ComponentTwo.csproj Build 0:00.2299238 ComponentTwo.csproj Resolve 0:00.0010202 ComponentTwo.csproj (netstandard2.1) Project ComponentTwo has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/DataBinding/DataBinding.csproj Evaluate 0:00.3941195 DataBinding.csproj Build 0:00.2116468 DataBinding.csproj Resolve 0:00.0010026 DataBinding.csproj (netstandard2.1) Project DataBinding has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/DataBindingTwo/DataBindingTwo.csproj Evaluate 0:00.3773786 DataBindingTwo.csproj Build 0:00.2139524 DataBindingTwo.csproj Resolve 0:00.0009692 DataBindingTwo.csproj (netstandard2.1) Project DataBindingTwo has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor/HelloWorld/HelloWorld.csproj Evaluate 0:00.3813835 HelloWorld.csproj Build 0:00.2232852 HelloWorld.csproj Resolve 0:00.0009933 HelloWorld.csproj (netstandard2.1) Project HelloWorld has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/ChatR/ChatR.csproj Evaluate 0:00.2788068 ChatR.csproj Build 0:00.2824056 ChatR.csproj Resolve 0:00.0016899 ChatR.csproj (netcoreapp3.1) Project ChatR has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/ComponentEvents/ComponentEvents.csproj Evaluate 0:00.2794438 ComponentEvents.csproj Build 0:00.2901496 ComponentEvents.csproj Resolve 0:00.0016762 ComponentEvents.csproj (netcoreapp3.1) Project ComponentEvents has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/ComponentEvents-2/ComponentEvents.csproj Evaluate 0:00.3150101 ComponentEvents.csproj Build 0:00.2941910 ComponentEvents.csproj Resolve 0:00.0017387 ComponentEvents.csproj (netcoreapp3.1) Project ComponentEvents has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/DependencyInjection/DependencyInjection.csproj Evaluate 0:00.3558145 DependencyInjection.csproj Build 0:00.2821453 DependencyInjection.csproj Resolve 0:00.0016921 DependencyInjection.csproj (netcoreapp3.1) Project DependencyInjection has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/HelloWorld/HelloWorld.csproj Evaluate 0:00.3392021 HelloWorld.csproj Build 0:00.2832535 HelloWorld.csproj Resolve 0:00.0016617 HelloWorld.csproj (netcoreapp3.1) Project HelloWorld has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/JsIntegration/JsIntegration.csproj Evaluate 0:00.3383018 JsIntegration.csproj Build 0:00.2423859 JsIntegration.csproj Resolve 0:00.0017509 JsIntegration.csproj (netcoreapp3.1) Project JsIntegration has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/Layout/Layout.csproj Evaluate 0:00.3312202 Layout.csproj Build 0:00.3654950 Layout.csproj Resolve 0:00.0016882 Layout.csproj (netcoreapp3.1) Project Layout has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/Localization/Localization.csproj Evaluate 0:00.3096120 Localization.csproj Build 0:00.2347873 Localization.csproj Resolve 0:00.0017006 Localization.csproj (netcoreapp3.1) Project Localization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/Localization-2/Localization.csproj Evaluate 0:00.2800774 Localization.csproj Build 0:00.2556098 Localization.csproj Resolve 0:00.0017042 Localization.csproj (netcoreapp3.1) Project Localization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/Localization-3/Localization.csproj Evaluate 0:00.2847164 Localization.csproj Build 0:00.2463442 Localization.csproj Resolve 0:00.0016671 Localization.csproj (netcoreapp3.1) Project Localization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/Localization-4/Localization.csproj Evaluate 0:00.2715044 Localization.csproj Build 0:00.2634507 Localization.csproj Resolve 0:00.0016862 Localization.csproj (netcoreapp3.1) Project Localization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/RssReader/RssReader.csproj Evaluate 0:00.3222683 RssReader.csproj Build 0:00.3290471 RssReader.csproj Resolve 0:00.0018112 RssReader.csproj (netcoreapp3.1) Project RssReader has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/RssReader-2/RssReader.csproj Evaluate 0:00.3127412 RssReader.csproj Build 0:00.2989143 RssReader.csproj Resolve 0:00.0017084 RssReader.csproj (netcoreapp3.1) Project RssReader has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/StartingVariation/StartingVariation.csproj Evaluate 0:00.3435180 StartingVariation.csproj Build 0:00.3814126 StartingVariation.csproj Resolve 0:00.0016688 StartingVariation.csproj (netcoreapp3.1) Project StartingVariation has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/WallOfCounters/WallOfCounters.csproj Evaluate 0:00.2733175 WallOfCounters.csproj Build 0:00.2623087 WallOfCounters.csproj Resolve 0:00.0017915 WallOfCounters.csproj (netcoreapp3.1) Project WallOfCounters has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/caching/caching-1/caching.csproj Evaluate 0:00.2569564 caching.csproj Build 0:00.1501079 caching.csproj Resolve 0:00.0017013 caching.csproj (netcoreapp3.1) Project caching has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/caching/caching-2/caching-2.csproj Evaluate 0:00.2908745 caching-2.csproj Build 0:00.1512430 caching-2.csproj Resolve 0:00.0016755 caching-2.csproj (netcoreapp3.1) Project caching-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/caching/caching-3/caching-3.csproj Evaluate 0:00.2953758 caching-3.csproj Build 0:00.1489373 caching-3.csproj Resolve 0:00.0017123 caching-3.csproj (netcoreapp3.1) Project caching-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/caching/caching-4/caching-4.csproj Evaluate 0:00.2804022 caching-4.csproj Build 0:00.1515543 caching-4.csproj Resolve 0:00.0017264 caching-4.csproj (netcoreapp3.1) Project caching-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/caching/redis-cache/redis-cache.csproj Evaluate 0:00.2485096 redis-cache.csproj Build 0:00.1737558 redis-cache.csproj Resolve 0:00.0038236 redis-cache.csproj (netcoreapp3.1) Project redis-cache has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/command-line/command-line-1/command-line-1.csproj Evaluate 0:00.2783176 command-line-1.csproj Build 0:00.1113930 command-line-1.csproj Resolve 0:00.0016597 command-line-1.csproj (netcoreapp3.1) Project command-line-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-1/configuration.csproj Evaluate 0:00.2735258 configuration.csproj Build 0:00.1484040 configuration.csproj Resolve 0:00.0016897 configuration.csproj (netcoreapp3.1) Project configuration has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-environment-variables/configuration-environment-variables.csproj Evaluate 0:00.2892747 configuration-environment-variables.csproj Build 0:00.1833049 configuration-environment-variables.csproj Resolve 0:00.0017320 configuration-environment-variables.csproj (netcoreapp3.1) Project configuration-environment-variables has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-ini/configuration-ini.csproj Evaluate 0:00.2630799 configuration-ini.csproj Build 0:00.1703531 configuration-ini.csproj Resolve 0:00.0017252 configuration-ini.csproj (netcoreapp3.1) Project configuration-ini has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-ini-options/configuration-ini-options.csproj Evaluate 0:00.2641702 configuration-ini-options.csproj Build 0:00.1927311 configuration-ini-options.csproj Resolve 0:00.0016770 configuration-ini-options.csproj (netcoreapp3.1) Project configuration-ini-options has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-options/configuration-options.csproj Evaluate 0:00.2661833 configuration-options.csproj Build 0:00.1705802 configuration-options.csproj Resolve 0:00.0016789 configuration-options.csproj (netcoreapp3.1) Project configuration-options has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-xml/configuration-xml.csproj Evaluate 0:00.2665004 configuration-xml.csproj Build 0:00.1889241 configuration-xml.csproj Resolve 0:00.0016843 configuration-xml.csproj (netcoreapp3.1) Project configuration-xml has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/configurations/configuration-xml-options/configuration-xml-options.csproj Evaluate 0:00.2602530 configuration-xml-options.csproj Build 0:00.1700249 configuration-xml-options.csproj Resolve 0:00.0017673 configuration-xml-options.csproj (netcoreapp3.1) Project configuration-xml-options has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/dependency-injection/dependency-injection-1/dependency-injection-1.csproj Evaluate 0:00.2645153 dependency-injection-1.csproj Build 0:00.1857339 dependency-injection-1.csproj Resolve 0:00.0016775 dependency-injection-1.csproj (netcoreapp3.1) Project dependency-injection-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/dependency-injection/dependency-injection-2/dependency-injection-2.csproj Evaluate 0:00.2605179 dependency-injection-2.csproj Build 0:00.1317146 dependency-injection-2.csproj Resolve 0:00.0017074 dependency-injection-2.csproj (netcoreapp3.1) Project dependency-injection-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/dependency-injection/dependency-injection-3/dependency-injection-3.csproj Evaluate 0:00.2673388 dependency-injection-3.csproj Build 0:00.1913544 dependency-injection-3.csproj Resolve 0:00.0017535 dependency-injection-3.csproj (netcoreapp3.1) Project dependency-injection-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/diagnostics/diagnostics-1/diagnostics.csproj Evaluate 0:00.2647302 diagnostics.csproj Build 0:00.1721018 diagnostics.csproj Resolve 0:00.0016790 diagnostics.csproj (netcoreapp3.1) Project diagnostics has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/diagnostics/diagnostics-2/diagnostics-2.csproj Evaluate 0:00.2671382 diagnostics-2.csproj Build 0:00.1614449 diagnostics-2.csproj Resolve 0:00.0017368 diagnostics-2.csproj (netcoreapp3.1) Project diagnostics-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/diagnostics/diagnostics-3/diagnostics-3.csproj Evaluate 0:00.2686154 diagnostics-3.csproj Build 0:00.1678075 diagnostics-3.csproj Resolve 0:00.0016769 diagnostics-3.csproj (netcoreapp3.1) Project diagnostics-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/diagnostics/diagnostics-4/diagnostics-4.csproj Evaluate 0:00.2660086 diagnostics-4.csproj Build 0:00.1713450 diagnostics-4.csproj Resolve 0:00.0017653 diagnostics-4.csproj (netcoreapp3.1) Project diagnostics-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/diagnostics/diagnostics-5/diagnostics-5.csproj Evaluate 0:00.2658188 diagnostics-5.csproj Build 0:00.1696341 diagnostics-5.csproj Resolve 0:00.0017507 diagnostics-5.csproj (netcoreapp3.1) Project diagnostics-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/diagnostics/diagnostics-6/diagnostics-6.csproj Evaluate 0:00.2645297 diagnostics-6.csproj Build 0:00.1701693 diagnostics-6.csproj Resolve 0:00.0019023 diagnostics-6.csproj (netcoreapp3.1) Project diagnostics-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/endpoint-routing/endpoint-routing.csproj Evaluate 0:00.2912330 endpoint-routing.csproj Build 0:00.1510687 endpoint-routing.csproj Resolve 0:00.0016632 endpoint-routing.csproj (netcoreapp3.1) Project endpoint-routing has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/endpoint-routing-2/endpoint-routing-2.csproj Evaluate 0:00.2985519 endpoint-routing-2.csproj Build 0:00.1471892 endpoint-routing-2.csproj Resolve 0:00.0017069 endpoint-routing-2.csproj (netcoreapp3.1) Project endpoint-routing-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/endpoint-routing-3/endpoint-routing-3.csproj Evaluate 0:00.2839158 endpoint-routing-3.csproj Build 0:00.1504253 endpoint-routing-3.csproj Resolve 0:00.0017209 endpoint-routing-3.csproj (netcoreapp3.1) Project endpoint-routing-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/endpoint-routing-4/endpoint-routing-4.csproj Evaluate 0:00.2543636 endpoint-routing-4.csproj Build 0:00.1492348 endpoint-routing-4.csproj Resolve 0:00.0017593 endpoint-routing-4.csproj (netcoreapp3.1) Project endpoint-routing-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/endpoint-routing-6/endpoint-routing-6.csproj Evaluate 0:00.2408719 endpoint-routing-6.csproj Build 0:00.1518766 endpoint-routing-6.csproj Resolve 0:00.0016874 endpoint-routing-6.csproj (netcoreapp3.1) Project endpoint-routing-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing/new-routing.csproj Evaluate 0:00.3189605 new-routing.csproj Build 0:00.1756219 new-routing.csproj Resolve 0:00.0017064 new-routing.csproj (netcoreapp3.1) Project new-routing has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-10/new-routing-10.csproj Evaluate 0:00.2686379 new-routing-10.csproj Build 0:00.1736046 new-routing-10.csproj Resolve 0:00.0016889 new-routing-10.csproj (netcoreapp3.1) Project new-routing-10 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-11/new-routing-11.csproj Evaluate 0:00.2728134 new-routing-11.csproj Build 0:00.1640140 new-routing-11.csproj Resolve 0:00.0016639 new-routing-11.csproj (netcoreapp3.1) Project new-routing-11 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-12/new-routing-12.csproj Evaluate 0:00.2701289 new-routing-12.csproj Build 0:00.2074208 new-routing-12.csproj Resolve 0:00.0017172 new-routing-12.csproj (netcoreapp3.1) Project new-routing-12 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-13/new-routing-13.csproj Evaluate 0:00.2978361 new-routing-13.csproj Build 0:00.1880584 new-routing-13.csproj Resolve 0:00.0016935 new-routing-13.csproj (netcoreapp3.1) Project new-routing-13 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-14/new-routing-14.csproj Evaluate 0:00.2293586 new-routing-14.csproj Build 0:00.1700573 new-routing-14.csproj Resolve 0:00.0017016 new-routing-14.csproj (netcoreapp3.1) Project new-routing-14 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-15/new-routing-15.csproj Evaluate 0:00.2805940 new-routing-15.csproj Build 0:00.1706670 new-routing-15.csproj Resolve 0:00.0016823 new-routing-15.csproj (netcoreapp3.1) Project new-routing-15 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-16/new-routing-16.csproj Evaluate 0:00.4007871 new-routing-16.csproj Build 0:00.1852808 new-routing-16.csproj Resolve 0:00.0016894 new-routing-16.csproj (netcoreapp3.1) Project new-routing-16 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-17/new-routing-17.csproj Evaluate 0:00.2801221 new-routing-17.csproj Build 0:00.1680880 new-routing-17.csproj Resolve 0:00.0017369 new-routing-17.csproj (netcoreapp3.1) Project new-routing-17 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-18/new-routing-18.csproj Evaluate 0:00.2985687 new-routing-18.csproj Build 0:00.1826437 new-routing-18.csproj Resolve 0:00.0017337 new-routing-18.csproj (netcoreapp3.1) Project new-routing-18 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-19/new-routing-19.csproj Evaluate 0:00.2888949 new-routing-19.csproj Build 0:00.1956053 new-routing-19.csproj Resolve 0:00.0016835 new-routing-19.csproj (netcoreapp3.1) Project new-routing-19 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-2/new-routing-2.csproj Evaluate 0:00.2752027 new-routing-2.csproj Build 0:00.1707952 new-routing-2.csproj Resolve 0:00.0016912 new-routing-2.csproj (netcoreapp3.1) Project new-routing-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-20/new-routing-20.csproj Evaluate 0:00.2996028 new-routing-20.csproj Build 0:00.2012623 new-routing-20.csproj Resolve 0:00.0017489 new-routing-20.csproj (netcoreapp3.1) Project new-routing-20 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-21/new-routing-21.csproj Evaluate 0:00.2365237 new-routing-21.csproj Build 0:00.1626190 new-routing-21.csproj Resolve 0:00.0016964 new-routing-21.csproj (netcoreapp3.1) Project new-routing-21 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-22/new-routing-22.csproj Evaluate 0:00.2721668 new-routing-22.csproj Build 0:00.1726485 new-routing-22.csproj Resolve 0:00.0017362 new-routing-22.csproj (netcoreapp3.1) Project new-routing-22 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-23/new-routing-23.csproj Evaluate 0:00.2955861 new-routing-23.csproj Build 0:00.1729639 new-routing-23.csproj Resolve 0:00.0017123 new-routing-23.csproj (netcoreapp3.1) Project new-routing-23 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-24/new-routing-24.csproj Evaluate 0:00.2878423 new-routing-24.csproj Build 0:00.1477459 new-routing-24.csproj Resolve 0:00.0017914 new-routing-24.csproj (netcoreapp3.1) Project new-routing-24 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-25/new-routing-25.csproj Evaluate 0:00.2962834 new-routing-25.csproj Build 0:00.1501551 new-routing-25.csproj Resolve 0:00.0017593 new-routing-25.csproj (netcoreapp3.1) Project new-routing-25 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-26/new-routing-26.csproj Evaluate 0:00.2928713 new-routing-26.csproj Build 0:00.1752052 new-routing-26.csproj Resolve 0:00.0017177 new-routing-26.csproj (netcoreapp3.1) Project new-routing-26 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-27/new-routing-27.csproj Evaluate 0:00.3681425 new-routing-27.csproj Build 0:00.1745563 new-routing-27.csproj Resolve 0:00.0017081 new-routing-27.csproj (netcoreapp3.1) Project new-routing-27 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-28/new-routing-28.csproj Evaluate 0:00.3556766 new-routing-28.csproj Build 0:00.1619418 new-routing-28.csproj Resolve 0:00.0017022 new-routing-28.csproj (netcoreapp3.1) Project new-routing-28 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-29/new-routing-29.csproj Evaluate 0:00.3567193 new-routing-29.csproj Build 0:00.1696392 new-routing-29.csproj Resolve 0:00.0017369 new-routing-29.csproj (netcoreapp3.1) Project new-routing-29 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-3/new-routing-3.csproj Evaluate 0:00.3008505 new-routing-3.csproj Build 0:00.1822216 new-routing-3.csproj Resolve 0:00.0017478 new-routing-3.csproj (netcoreapp3.1) Project new-routing-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-30/new-routing-30.csproj Evaluate 0:00.3351351 new-routing-30.csproj Build 0:00.1889505 new-routing-30.csproj Resolve 0:00.0016905 new-routing-30.csproj (netcoreapp3.1) Project new-routing-30 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-4/new-routing-4.csproj Evaluate 0:00.2354298 new-routing-4.csproj Build 0:00.1747867 new-routing-4.csproj Resolve 0:00.0017346 new-routing-4.csproj (netcoreapp3.1) Project new-routing-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-5/new-routing-5.csproj Evaluate 0:00.2758071 new-routing-5.csproj Build 0:00.1334969 new-routing-5.csproj Resolve 0:00.0017502 new-routing-5.csproj (netcoreapp3.1) Project new-routing-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-6/new-routing-6.csproj Evaluate 0:00.2847774 new-routing-6.csproj Build 0:00.1959064 new-routing-6.csproj Resolve 0:00.0017146 new-routing-6.csproj (netcoreapp3.1) Project new-routing-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-7/new-routing-7.csproj Evaluate 0:00.2906765 new-routing-7.csproj Build 0:00.2133389 new-routing-7.csproj Resolve 0:00.0017999 new-routing-7.csproj (netcoreapp3.1) Project new-routing-7 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-8/new-routing-8.csproj Evaluate 0:00.2796233 new-routing-8.csproj Build 0:00.1640534 new-routing-8.csproj Resolve 0:00.0017130 new-routing-8.csproj (netcoreapp3.1) Project new-routing-8 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/new-routing-9/new-routing-9.csproj Evaluate 0:00.2928100 new-routing-9.csproj Build 0:00.1973824 new-routing-9.csproj Resolve 0:00.0017205 new-routing-9.csproj (netcoreapp3.1) Project new-routing-9 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/endpoint-routing/parameter-transformer/parameter-transformer.csproj Evaluate 0:00.2688172 parameter-transformer.csproj Build 0:00.1789247 parameter-transformer.csproj Resolve 0:00.0017191 parameter-transformer.csproj (netcoreapp3.1) Project parameter-transformer has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/error-handling/error-handling-1/error-handling.csproj Evaluate 0:00.2561706 error-handling.csproj Build 0:00.1318340 error-handling.csproj Resolve 0:00.0017263 error-handling.csproj (netcoreapp3.1) Project error-handling has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-connection/features-connection.csproj Evaluate 0:00.2917417 features-connection.csproj Build 0:00.1909802 features-connection.csproj Resolve 0:00.0018608 features-connection.csproj (netcoreapp3.1) Project features-connection has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-http-body-response/features-http-body-response.csproj Evaluate 0:00.2299340 features-http-body-response.csproj Build 0:00.1695497 features-http-body-response.csproj Resolve 0:00.0016995 features-http-body-response.csproj (netcoreapp3.1) Project features-http-body-response has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-max-request-body-size/features-max-request-body-size.csproj Evaluate 0:00.2672268 features-max-request-body-size.csproj Build 0:00.1971244 features-max-request-body-size.csproj Resolve 0:00.0017244 features-max-request-body-size.csproj (netcoreapp3.1) Project features-max-request-body-size has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-request-culture/features-request-culture.csproj Evaluate 0:00.2936811 features-request-culture.csproj Build 0:00.1546646 features-request-culture.csproj Resolve 0:00.0017004 features-request-culture.csproj (netcoreapp3.1) Project features-request-culture has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-server-addresses/features-server-addresses.csproj Evaluate 0:00.3006995 features-server-addresses.csproj Build 0:00.1514550 features-server-addresses.csproj Resolve 0:00.0017112 features-server-addresses.csproj (netcoreapp3.1) Project features-server-addresses has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-server-addresses-2/features-server-addresses-2.csproj Evaluate 0:00.2871696 features-server-addresses-2.csproj Build 0:00.1500188 features-server-addresses-2.csproj Resolve 0:00.0016751 features-server-addresses-2.csproj (netcoreapp3.1) Project features-server-addresses-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-server-custom/features-server-custom.csproj Evaluate 0:00.3020639 features-server-custom.csproj Build 0:00.1544261 features-server-custom.csproj Resolve 0:00.0017161 features-server-custom.csproj (netcoreapp3.1) Project features-server-custom has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-server-custom-override/features-server-custom-override.csproj Evaluate 0:00.2863728 features-server-custom-override.csproj Build 0:00.1522691 features-server-custom-override.csproj Resolve 0:00.0017303 features-server-custom-override.csproj (netcoreapp3.1) Project features-server-custom-override has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-server-request/features-server-request.csproj Evaluate 0:00.2971580 features-server-request.csproj Build 0:00.1506057 features-server-request.csproj Resolve 0:00.0016778 features-server-request.csproj (netcoreapp3.1) Project features-server-request has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-session/features-session.csproj Evaluate 0:00.2818001 features-session.csproj Build 0:00.1511104 features-session.csproj Resolve 0:00.0016879 features-session.csproj (netcoreapp3.1) Project features-session has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/features/features-session-redis-2/features-session-redis-2.csproj Evaluate 0:00.2933715 features-session-redis-2.csproj Build 0:00.1941482 features-session-redis-2.csproj Resolve 0:00.0021929 features-session-redis-2.csproj (netcoreapp3.1) Project features-session-redis-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/file-provider-custom/file-provider-custom.csproj Evaluate 0:00.2727335 file-provider-custom.csproj Build 0:00.1823483 file-provider-custom.csproj Resolve 0:00.0016844 file-provider-custom.csproj (netcoreapp3.1) Project file-provider-custom has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/file-provider-physical/file-provider-physical.csproj Evaluate 0:00.2337906 file-provider-physical.csproj Build 0:00.1770960 file-provider-physical.csproj Resolve 0:00.0017466 file-provider-physical.csproj (netcoreapp3.1) Project file-provider-physical has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/serve-static-files-1/serve-static-files.csproj Evaluate 0:00.2449453 serve-static-files.csproj Build 0:00.2055362 serve-static-files.csproj Resolve 0:00.0017413 serve-static-files.csproj (netcoreapp3.1) Project serve-static-files has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/serve-static-files-2/serve-static-files-2.csproj Evaluate 0:00.2740292 serve-static-files-2.csproj Build 0:00.1734629 serve-static-files-2.csproj Resolve 0:00.0017088 serve-static-files-2.csproj (netcoreapp3.1) Project serve-static-files-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/serve-static-files-3/serve-static-files-3.csproj Evaluate 0:00.2711573 serve-static-files-3.csproj Build 0:00.1820235 serve-static-files-3.csproj Resolve 0:00.0016796 serve-static-files-3.csproj (netcoreapp3.1) Project serve-static-files-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/serve-static-files-4/serve-static-files-4.csproj Evaluate 0:00.2670249 serve-static-files-4.csproj Build 0:00.1762966 serve-static-files-4.csproj Resolve 0:00.0016684 serve-static-files-4.csproj (netcoreapp3.1) Project serve-static-files-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/serve-static-files-5/serve-static-files-5.csproj Evaluate 0:00.2762562 serve-static-files-5.csproj Build 0:00.1951841 serve-static-files-5.csproj Resolve 0:00.0017116 serve-static-files-5.csproj (netcoreapp3.1) Project serve-static-files-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/file-provider/serve-static-files-6/serve-static-files-6.csproj Evaluate 0:00.2704647 serve-static-files-6.csproj Build 0:00.1745289 serve-static-files-6.csproj Resolve 0:00.0017092 serve-static-files-6.csproj (netcoreapp3.1) Project serve-static-files-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-1/generic-host.csproj Evaluate 0:00.2680608 generic-host.csproj Build 0:00.1884967 generic-host.csproj Resolve 0:00.0016737 generic-host.csproj (netcoreapp3.1) Project generic-host has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-2/generic-host-2.csproj Evaluate 0:00.2650200 generic-host-2.csproj Build 0:00.1714978 generic-host-2.csproj Resolve 0:00.0016806 generic-host-2.csproj (netcoreapp3.1) Project generic-host-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-3/generic-host-3.csproj Evaluate 0:00.3060266 generic-host-3.csproj Build 0:00.1579110 generic-host-3.csproj Resolve 0:00.0017032 generic-host-3.csproj (netcoreapp3.1) Project generic-host-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-4/generic-host-4.csproj Evaluate 0:00.2825421 generic-host-4.csproj Build 0:00.1487747 generic-host-4.csproj Resolve 0:00.0017611 generic-host-4.csproj (netcoreapp3.1) Project generic-host-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-5/generic-host-5.csproj Evaluate 0:00.2942342 generic-host-5.csproj Build 0:00.1322624 generic-host-5.csproj Resolve 0:00.0017510 generic-host-5.csproj (netcoreapp3.1) Project generic-host-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-configure-app/generic-host-configure-app.csproj Evaluate 0:00.2929450 generic-host-configure-app.csproj Build 0:00.1477328 generic-host-configure-app.csproj Resolve 0:00.0016830 generic-host-configure-app.csproj (netcoreapp3.1) Project generic-host-configure-app has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-configure-host/generic-host-configure-host.csproj Evaluate 0:00.2964100 generic-host-configure-host.csproj Build 0:00.1469213 generic-host-configure-host.csproj Resolve 0:00.0016817 generic-host-configure-host.csproj (netcoreapp3.1) Project generic-host-configure-host has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-configure-logging/generic-host-configure-logging.csproj Evaluate 0:00.2827421 generic-host-configure-logging.csproj Build 0:00.1501078 generic-host-configure-logging.csproj Resolve 0:00.0016782 generic-host-configure-logging.csproj (netcoreapp3.1) Project generic-host-configure-logging has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-environment/generic-host-environment.csproj Evaluate 0:00.2835811 generic-host-environment.csproj Build 0:00.1495493 generic-host-environment.csproj Resolve 0:00.0017154 generic-host-environment.csproj (netcoreapp3.1) Project generic-host-environment has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/generic-host/generic-host-ihostapplicationlifetime/generic-host-ihostapplicationlifetime.csproj Evaluate 0:00.2819875 generic-host-ihostapplicationlifetime.csproj Build 0:00.1487188 generic-host-ihostapplicationlifetime.csproj Resolve 0:00.0017632 generic-host-ihostapplicationlifetime.csproj (netcoreapp3.1) Project generic-host-ihostapplicationlifetime has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/health-check/health-check-1/health-check.csproj Evaluate 0:00.2942673 health-check.csproj Build 0:00.1772722 health-check.csproj Resolve 0:00.0017056 health-check.csproj (netcoreapp3.1) Project health-check has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/health-check/health-check-2/health-check-2.csproj Evaluate 0:00.2626174 health-check-2.csproj Build 0:00.1650257 health-check-2.csproj Resolve 0:00.0016922 health-check-2.csproj (netcoreapp3.1) Project health-check-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/health-check/health-check-3/health-check-3.csproj Evaluate 0:00.2612268 health-check-3.csproj Build 0:00.1940980 health-check-3.csproj Resolve 0:00.0017139 health-check-3.csproj (netcoreapp3.1) Project health-check-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/health-check/health-check-4/health-check-4.csproj Evaluate 0:00.2597673 health-check-4.csproj Build 0:00.1688469 health-check-4.csproj Resolve 0:00.0016640 health-check-4.csproj (netcoreapp3.1) Project health-check-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/health-check/health-check-5/health-check-5.csproj Evaluate 0:00.2631529 health-check-5.csproj Build 0:00.1946496 health-check-5.csproj Resolve 0:00.0017425 health-check-5.csproj (netcoreapp3.1) Project health-check-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/health-check/health-check-6/health-check-6.csproj Evaluate 0:00.2659376 health-check-6.csproj Build 0:00.1703588 health-check-6.csproj Resolve 0:00.0017125 health-check-6.csproj (netcoreapp3.1) Project health-check-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/httpclientfactory/httpclientfactory-1/httpclientfactory.csproj Evaluate 0:00.2695991 httpclientfactory.csproj Build 0:00.1871567 httpclientfactory.csproj Resolve 0:00.0016948 httpclientfactory.csproj (netcoreapp3.1) Project httpclientfactory has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/httpclientfactory/httpclientfactory-2/httpclientfactory-2.csproj Evaluate 0:00.2634465 httpclientfactory-2.csproj Build 0:00.1708631 httpclientfactory-2.csproj Resolve 0:00.0016882 httpclientfactory-2.csproj (netcoreapp3.1) Project httpclientfactory-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/httpclientfactory/httpclientfactory-3/httpclientfactory-3.csproj Evaluate 0:00.2722267 httpclientfactory-3.csproj Build 0:00.1975924 httpclientfactory-3.csproj Resolve 0:00.0017133 httpclientfactory-3.csproj (netcoreapp3.1) Project httpclientfactory-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/httpclientfactory/httpclientfactory-4/httpclientfactory-4.csproj Evaluate 0:00.2695579 httpclientfactory-4.csproj Build 0:00.1719797 httpclientfactory-4.csproj Resolve 0:00.0016741 httpclientfactory-4.csproj (netcoreapp3.1) Project httpclientfactory-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/ihosted-service/ihosted-service-1/ihosted-service-1.csproj Evaluate 0:00.2532191 ihosted-service-1.csproj Build 0:00.1850704 ihosted-service-1.csproj Resolve 0:00.0016744 ihosted-service-1.csproj (netcoreapp3.1) Project ihosted-service-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json/json.csproj Evaluate 0:00.2672585 json.csproj Build 0:00.1295754 json.csproj Resolve 0:00.0016915 json.csproj (netcoreapp3.1) Project json has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-11/json-11.csproj Evaluate 0:00.2729772 json-11.csproj Build 0:00.1512990 json-11.csproj Resolve 0:00.0016715 json-11.csproj (netcoreapp3.1) Project json-11 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-2/json-2.csproj Evaluate 0:00.2735002 json-2.csproj Build 0:00.1307679 json-2.csproj Resolve 0:00.0016873 json-2.csproj (netcoreapp3.1) Project json-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-3/json-3.csproj Evaluate 0:00.3072658 json-3.csproj Build 0:00.1070418 json-3.csproj Resolve 0:00.0016685 json-3.csproj (netcoreapp3.1) Project json-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-4/json-4.csproj Evaluate 0:00.2915340 json-4.csproj Build 0:00.0991890 json-4.csproj Resolve 0:00.0016753 json-4.csproj (netcoreapp3.1) Project json-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-5/json-5.csproj Evaluate 0:00.3034496 json-5.csproj Build 0:00.1106634 json-5.csproj Resolve 0:00.0016834 json-5.csproj (netcoreapp3.1) Project json-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-6/json-6.csproj Evaluate 0:00.2992534 json-6.csproj Build 0:00.1084579 json-6.csproj Resolve 0:00.0017440 json-6.csproj (netcoreapp3.1) Project json-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-7/json-7.csproj Evaluate 0:00.2974789 json-7.csproj Build 0:00.1085993 json-7.csproj Resolve 0:00.0016850 json-7.csproj (netcoreapp3.1) Project json-7 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-8/json-8.csproj Evaluate 0:00.1882128 json-8.csproj Build 0:00.0979543 json-8.csproj Resolve 0:00.0009278 json-8.csproj (netcoreapp3.1) Project json-8 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/json/json-9/json-9.csproj Evaluate 0:00.2711325 json-9.csproj Build 0:00.1390827 json-9.csproj Resolve 0:00.0016944 json-9.csproj (netcoreapp3.1) Project json-9 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/localization/localization-1/localization.csproj Evaluate 0:00.2643297 localization.csproj Build 0:00.1287905 localization.csproj Resolve 0:00.0016514 localization.csproj (netcoreapp3.1) Project localization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/localization/localization-2/localization-2.csproj Evaluate 0:00.2508889 localization-2.csproj Build 0:00.1427805 localization-2.csproj Resolve 0:00.0017156 localization-2.csproj (netcoreapp3.1) Project localization-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/localization/localization-3/localization-3.csproj Evaluate 0:00.2570673 localization-3.csproj Build 0:00.1303511 localization-3.csproj Resolve 0:00.0016524 localization-3.csproj (netcoreapp3.1) Project localization-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/localization/localization-4/localization-4.csproj Evaluate 0:00.2878547 localization-4.csproj Build 0:00.1155030 localization-4.csproj Resolve 0:00.0017433 localization-4.csproj (netcoreapp3.1) Project localization-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/localization/localization-5/localization-5.csproj Evaluate 0:00.2867650 localization-5.csproj Build 0:00.1123219 localization-5.csproj Resolve 0:00.0016917 localization-5.csproj (netcoreapp3.1) Project localization-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/localization/localization-6/localization-6.csproj Evaluate 0:00.3000602 localization-6.csproj Build 0:00.1121207 localization-6.csproj Resolve 0:00.0017156 localization-6.csproj (netcoreapp3.1) Project localization-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/logging/logging-1/logging-1.csproj Evaluate 0:00.2824239 logging-1.csproj Build 0:00.1097296 logging-1.csproj Resolve 0:00.0016975 logging-1.csproj (netcoreapp3.1) Project logging-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/logging/logging-2/logging-2.csproj Evaluate 0:00.2998448 logging-2.csproj Build 0:00.1142173 logging-2.csproj Resolve 0:00.0017510 logging-2.csproj (netcoreapp3.1) Project logging-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mailkit/mailkit-1/mailkit.csproj Evaluate 0:00.2810597 mailkit.csproj Build 0:00.1349079 mailkit.csproj Resolve 0:00.0016904 mailkit.csproj (netcoreapp3.1) Project mailkit has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mailkit/mailkit-2/mailkit-2.csproj Evaluate 0:00.2978216 mailkit-2.csproj Build 0:00.1215491 mailkit-2.csproj Resolve 0:00.0017616 mailkit-2.csproj (netcoreapp3.1) Project mailkit-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-0/middleware-0.csproj Evaluate 0:00.2746718 middleware-0.csproj Build 0:00.1087837 middleware-0.csproj Resolve 0:00.0016560 middleware-0.csproj (netcoreapp3.1) Project middleware-0 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-1/middleware-1.csproj Evaluate 0:00.2545702 middleware-1.csproj Build 0:00.0992172 middleware-1.csproj Resolve 0:00.0016796 middleware-1.csproj (netcoreapp3.1) Project middleware-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-10/middleware-10.csproj Evaluate 0:00.2795427 middleware-10.csproj Build 0:00.1077681 middleware-10.csproj Resolve 0:00.0016800 middleware-10.csproj (netcoreapp3.1) Project middleware-10 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-11/middleware-11.csproj Evaluate 0:00.2772705 middleware-11.csproj Build 0:00.0969300 middleware-11.csproj Resolve 0:00.0016980 middleware-11.csproj (netcoreapp3.1) Project middleware-11 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-12/middleware-12.csproj Evaluate 0:00.2842887 middleware-12.csproj Build 0:00.1414003 middleware-12.csproj Resolve 0:00.0017180 middleware-12.csproj (netcoreapp3.1) Project middleware-12 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-13/middleware-13.csproj Evaluate 0:00.2549949 middleware-13.csproj Build 0:00.1230497 middleware-13.csproj Resolve 0:00.0017179 middleware-13.csproj (netcoreapp3.1) Project middleware-13 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-2/middleware-2.csproj Evaluate 0:00.2584080 middleware-2.csproj Build 0:00.1474902 middleware-2.csproj Resolve 0:00.0016627 middleware-2.csproj (netcoreapp3.1) Project middleware-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-3/middleware-3.csproj Evaluate 0:00.2593092 middleware-3.csproj Build 0:00.1322362 middleware-3.csproj Resolve 0:00.0017093 middleware-3.csproj (netcoreapp3.1) Project middleware-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-4/middleware-4.csproj Evaluate 0:00.2487610 middleware-4.csproj Build 0:00.1487158 middleware-4.csproj Resolve 0:00.0017201 middleware-4.csproj (netcoreapp3.1) Project middleware-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-5/middleware-5.csproj Evaluate 0:00.2601661 middleware-5.csproj Build 0:00.1305669 middleware-5.csproj Resolve 0:00.0016822 middleware-5.csproj (netcoreapp3.1) Project middleware-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-6/middleware-6.csproj Evaluate 0:00.2617207 middleware-6.csproj Build 0:00.1507432 middleware-6.csproj Resolve 0:00.0016738 middleware-6.csproj (netcoreapp3.1) Project middleware-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-7/middleware-7.csproj Evaluate 0:00.2633201 middleware-7.csproj Build 0:00.1333944 middleware-7.csproj Resolve 0:00.0017415 middleware-7.csproj (netcoreapp3.1) Project middleware-7 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-8/middleware-8.csproj Evaluate 0:00.2624463 middleware-8.csproj Build 0:00.1566713 middleware-8.csproj Resolve 0:00.0017357 middleware-8.csproj (netcoreapp3.1) Project middleware-8 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/middleware/middleware-9/middleware-9.csproj Evaluate 0:00.2686026 middleware-9.csproj Build 0:00.1335514 middleware-9.csproj Resolve 0:00.0017032 middleware-9.csproj (netcoreapp3.1) Project middleware-9 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/api-problem-details/api-problem-details.csproj Evaluate 0:00.2663459 api-problem-details.csproj Build 0:00.1448122 api-problem-details.csproj Resolve 0:00.0016880 api-problem-details.csproj (netcoreapp3.1) Project api-problem-details has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/api-problem-details-2/api-problem-details-2.csproj Evaluate 0:00.2582735 api-problem-details-2.csproj Build 0:00.1295888 api-problem-details-2.csproj Resolve 0:00.0016943 api-problem-details-2.csproj (netcoreapp3.1) Project api-problem-details-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/api-versioning/api-versioning.csproj Evaluate 0:00.2659089 api-versioning.csproj Build 0:00.1551408 api-versioning.csproj Resolve 0:00.0017085 api-versioning.csproj (netcoreapp3.1) Project api-versioning has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/hello-world/hello-world.csproj Evaluate 0:00.2581354 hello-world.csproj Build 0:00.1314584 hello-world.csproj Resolve 0:00.0016688 hello-world.csproj (netcoreapp3.1) Project hello-world has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/jwt/jwt.csproj Evaluate 0:00.2592256 jwt.csproj Build 0:00.1451393 jwt.csproj Resolve 0:00.0017140 jwt.csproj (netcoreapp3.1) Project jwt has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/model-binding-from-query/model-binding-from-query.csproj Evaluate 0:00.2569985 model-binding-from-query.csproj Build 0:00.1354177 model-binding-from-query.csproj Resolve 0:00.0016738 model-binding-from-query.csproj (netcoreapp3.1) Project model-binding-from-query has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/model-binding-from-route/model-binding-from-route.csproj Evaluate 0:00.2592212 model-binding-from-route.csproj Build 0:00.1504865 model-binding-from-route.csproj Resolve 0:00.0016920 model-binding-from-route.csproj (netcoreapp3.1) Project model-binding-from-route has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/mvc-output-xml/mvc-output-xml.csproj Evaluate 0:00.2660265 mvc-output-xml.csproj Build 0:00.1334333 mvc-output-xml.csproj Resolve 0:00.0016970 mvc-output-xml.csproj (netcoreapp3.1) Project mvc-output-xml has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/nswag/nswag.csproj Evaluate 0:00.2650883 nswag.csproj Build 0:00.1312343 nswag.csproj Resolve 0:00.0017070 nswag.csproj (netcoreapp3.1) Project nswag has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/nswag-2/nswag-2.csproj Evaluate 0:00.2829292 nswag-2.csproj Build 0:00.1108592 nswag-2.csproj Resolve 0:00.0016904 nswag-2.csproj (netcoreapp3.1) Project nswag-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/output-formatter-syndication/output-formatter-syndication.csproj Evaluate 0:00.2999759 output-formatter-syndication.csproj Build 0:00.1058923 output-formatter-syndication.csproj Resolve 0:00.0016891 output-formatter-syndication.csproj (netcoreapp3.1) Project output-formatter-syndication has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/result-filestream/result-filestream.csproj Evaluate 0:00.2861003 result-filestream.csproj Build 0:00.1101778 result-filestream.csproj Resolve 0:00.0017043 result-filestream.csproj (netcoreapp3.1) Project result-filestream has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/result-physicalfile/result-physicalpath.csproj Evaluate 0:00.3025374 result-physicalpath.csproj Build 0:00.0964872 result-physicalpath.csproj Resolve 0:00.0017650 result-physicalpath.csproj (netcoreapp3.1) Project result-physicalpath has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/utf8json-formatter/utf8json-formatter.csproj Evaluate 0:00.2882144 utf8json-formatter.csproj Build 0:00.1087269 utf8json-formatter.csproj Resolve 0:00.0016692 utf8json-formatter.csproj (netcoreapp3.1) Project utf8json-formatter has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/custom-html-generator/custom-html-generator.csproj Evaluate 0:00.2989622 custom-html-generator.csproj Build 0:00.1185507 custom-html-generator.csproj Resolve 0:00.0017468 custom-html-generator.csproj (netcoreapp3.1) Project custom-html-generator has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/handler/handler.csproj Evaluate 0:00.2860881 handler.csproj Build 0:00.1316331 handler.csproj Resolve 0:00.0017001 handler.csproj (netcoreapp3.1) Project handler has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/hello-world/hello-world.csproj Evaluate 0:00.2809770 hello-world.csproj Build 0:00.1175685 hello-world.csproj Resolve 0:00.0017091 hello-world.csproj (netcoreapp3.1) Project hello-world has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/razor-pages-basic/razor-pages-basic.csproj Evaluate 0:00.2822794 razor-pages-basic.csproj Build 0:00.1259310 razor-pages-basic.csproj Resolve 0:00.0016685 razor-pages-basic.csproj (netcoreapp3.1) Project razor-pages-basic has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/razor-pages-mvc/razor-pages-mvc.csproj Evaluate 0:00.3074271 razor-pages-mvc.csproj Build 0:00.1439292 razor-pages-mvc.csproj Resolve 0:00.0017488 razor-pages-mvc.csproj (netcoreapp3.1) Project razor-pages-mvc has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/routing/routing.csproj Evaluate 0:00.2595256 routing.csproj Build 0:00.1551291 routing.csproj Resolve 0:00.0016721 routing.csproj (netcoreapp3.1) Project routing has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/razor-pages/routing-2/routing-2.csproj Evaluate 0:00.2667813 routing-2.csproj Build 0:00.1604361 routing-2.csproj Resolve 0:00.0016941 routing-2.csproj (netcoreapp3.1) Project routing-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/anti-forgery/anti-forgery.csproj Evaluate 0:00.2655400 anti-forgery.csproj Build 0:00.1232042 anti-forgery.csproj Resolve 0:00.0016967 anti-forgery.csproj (netcoreapp3.1) Project anti-forgery has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/cookies-1/cookies-1.csproj Evaluate 0:00.2590527 cookies-1.csproj Build 0:00.1529186 cookies-1.csproj Resolve 0:00.0017403 cookies-1.csproj (netcoreapp3.1) Project cookies-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/cookies-2/cookies-2.csproj Evaluate 0:00.2350052 cookies-2.csproj Build 0:00.1181152 cookies-2.csproj Resolve 0:00.0016698 cookies-2.csproj (netcoreapp3.1) Project cookies-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/form-upload-file/form-upload-file.csproj Evaluate 0:00.2600465 form-upload-file.csproj Build 0:00.1429966 form-upload-file.csproj Resolve 0:00.0017376 form-upload-file.csproj (netcoreapp3.1) Project form-upload-file has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/form-url-encoded-content/form-url-encoded-content.csproj Evaluate 0:00.2583060 form-url-encoded-content.csproj Build 0:00.1154711 form-url-encoded-content.csproj Resolve 0:00.0016944 form-url-encoded-content.csproj (netcoreapp3.1) Project form-url-encoded-content has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/form-values/form-values.csproj Evaluate 0:00.2572879 form-values.csproj Build 0:00.1526256 form-values.csproj Resolve 0:00.0016854 form-values.csproj (netcoreapp3.1) Project form-values has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/query-string-1/query-string-1.csproj Evaluate 0:00.2642615 query-string-1.csproj Build 0:00.1178657 query-string-1.csproj Resolve 0:00.0016751 query-string-1.csproj (netcoreapp3.1) Project query-string-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/query-string-2/query-string-2.csproj Evaluate 0:00.2612090 query-string-2.csproj Build 0:00.1342429 query-string-2.csproj Resolve 0:00.0016625 query-string-2.csproj (netcoreapp3.1) Project query-string-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/query-string-3/query-string-3.csproj Evaluate 0:00.2619767 query-string-3.csproj Build 0:00.1177463 query-string-3.csproj Resolve 0:00.0016970 query-string-3.csproj (netcoreapp3.1) Project query-string-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/query-string-create/query-string-create.csproj Evaluate 0:00.2629876 query-string-create.csproj Build 0:00.1382216 query-string-create.csproj Resolve 0:00.0016732 query-string-create.csproj (netcoreapp3.1) Project query-string-create has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/request-headers/request-headers.csproj Evaluate 0:00.2569717 request-headers.csproj Build 0:00.1164040 request-headers.csproj Resolve 0:00.0017056 request-headers.csproj (netcoreapp3.1) Project request-headers has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/request-headers-names/request-headers-names.csproj Evaluate 0:00.2574518 request-headers-names.csproj Build 0:00.1275707 request-headers-names.csproj Resolve 0:00.0016784 request-headers-names.csproj (netcoreapp3.1) Project request-headers-names has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/request-headers-typed/request-headers-typed.csproj Evaluate 0:00.2562309 request-headers-typed.csproj Build 0:00.1154135 request-headers-typed.csproj Resolve 0:00.0016791 request-headers-typed.csproj (netcoreapp3.1) Project request-headers-typed has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/request/request-verb/request-verb.csproj Evaluate 0:00.2613755 request-verb.csproj Build 0:00.1362218 request-verb.csproj Resolve 0:00.0017436 request-verb.csproj (netcoreapp3.1) Project request-verb has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/response/compression-response/compression-response.csproj Evaluate 0:00.2816033 compression-response.csproj Build 0:00.0967419 compression-response.csproj Resolve 0:00.0016827 compression-response.csproj (netcoreapp3.1) Project compression-response has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/response/response-buffering/response-buffering.csproj Evaluate 0:00.2937002 response-buffering.csproj Build 0:00.0989530 response-buffering.csproj Resolve 0:00.0017367 response-buffering.csproj (netcoreapp3.1) Project response-buffering has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/response/response-header/response-header.csproj Evaluate 0:00.2783778 response-header.csproj Build 0:00.0967956 response-header.csproj Resolve 0:00.0016809 response-header.csproj (netcoreapp3.1) Project response-header has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/response/trailing-headers/trailing-headers.csproj Evaluate 0:00.2977056 trailing-headers.csproj Build 0:00.1065193 trailing-headers.csproj Resolve 0:00.0017453 trailing-headers.csproj (netcoreapp3.1) Project trailing-headers has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/rewrite/rewrite-1/rewrite.csproj Evaluate 0:00.2791262 rewrite.csproj Build 0:00.0949106 rewrite.csproj Resolve 0:00.0016916 rewrite.csproj (netcoreapp3.1) Project rewrite has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/rewrite/rewrite-2/rewrite-2.csproj Evaluate 0:00.2869194 rewrite-2.csproj Build 0:00.1088134 rewrite-2.csproj Resolve 0:00.0016708 rewrite-2.csproj (netcoreapp3.1) Project rewrite-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/rewrite/rewrite-3/rewrite-3.csproj Evaluate 0:00.2797393 rewrite-3.csproj Build 0:00.0977548 rewrite-3.csproj Resolve 0:00.0016622 rewrite-3.csproj (netcoreapp3.1) Project rewrite-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/rewrite/rewrite-4/rewrite-4.csproj Evaluate 0:00.2945357 rewrite-4.csproj Build 0:00.1110114 rewrite-4.csproj Resolve 0:00.0017074 rewrite-4.csproj (netcoreapp3.1) Project rewrite-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/rewrite/rewrite-5/rewrite-5.csproj Evaluate 0:00.2959580 rewrite-5.csproj Build 0:00.0967524 rewrite-5.csproj Resolve 0:00.0016634 rewrite-5.csproj (netcoreapp3.1) Project rewrite-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/rewrite/rewrite-6/rewrite-6.csproj Evaluate 0:00.2894452 rewrite-6.csproj Build 0:00.1096042 rewrite-6.csproj Resolve 0:00.0017114 rewrite-6.csproj (netcoreapp3.1) Project rewrite-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/env-development/env-development.csproj Evaluate 0:00.2876325 env-development.csproj Build 0:00.0947332 env-development.csproj Resolve 0:00.0016987 env-development.csproj (netcoreapp3.1) Project env-development has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/no-startup/no-startup.csproj Evaluate 0:00.2903750 no-startup.csproj Build 0:00.1312050 no-startup.csproj Resolve 0:00.0017066 no-startup.csproj (netcoreapp3.1) Project no-startup has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-basic/startup-basic.csproj Evaluate 0:00.2635951 startup-basic.csproj Build 0:00.1189777 startup-basic.csproj Resolve 0:00.0016757 startup-basic.csproj (netcoreapp3.1) Project startup-basic has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-basic-multiple/startup-basic-multiple.csproj Evaluate 0:00.2633120 startup-basic-multiple.csproj Build 0:00.1391633 startup-basic-multiple.csproj Resolve 0:00.0017313 startup-basic-multiple.csproj (netcoreapp3.1) Project startup-basic-multiple has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-basic-multiple-environment/startup-basic-multiple-environment.csproj Evaluate 0:00.2631378 startup-basic-multiple-environment.csproj Build 0:00.1396343 startup-basic-multiple-environment.csproj Resolve 0:00.0016750 startup-basic-multiple-environment.csproj (netcoreapp3.1) Project startup-basic-multiple-environment has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-basic-multiple-urls/startup-multiple-urls.csproj Evaluate 0:00.2641535 startup-multiple-urls.csproj Build 0:00.1391869 startup-multiple-urls.csproj Resolve 0:00.0016864 startup-multiple-urls.csproj (netcoreapp3.1) Project startup-multiple-urls has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-capture-errors/startup-capture-errors.csproj Evaluate 0:00.2658432 startup-capture-errors.csproj Build 0:00.1238864 startup-capture-errors.csproj Resolve 0:00.0016933 startup-capture-errors.csproj (netcoreapp3.1) Project startup-capture-errors has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-custom-name/startup-custom-name.csproj Evaluate 0:00.2599271 startup-custom-name.csproj Build 0:00.1308685 startup-custom-name.csproj Resolve 0:00.0017194 startup-custom-name.csproj (netcoreapp3.1) Project startup-custom-name has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-istartupfilter/startup-istartupfilter.csproj Evaluate 0:00.2669699 startup-istartupfilter.csproj Build 0:00.1222090 startup-istartupfilter.csproj Resolve 0:00.0016651 startup-istartupfilter.csproj (netcoreapp3.1) Project startup-istartupfilter has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-multiple-configure-environment/startup-multiple-configure-environment.csproj Evaluate 0:00.2625251 startup-multiple-configure-environment.csproj Build 0:00.1437371 startup-multiple-configure-environment.csproj Resolve 0:00.0016629 startup-multiple-configure-environment.csproj (netcoreapp3.1) Project startup-multiple-configure-environment has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/startup-multiple-configure-environment-services/startup-multiple-configure-environment-services.csproj Evaluate 0:00.2664951 startup-multiple-configure-environment-services.csproj Build 0:00.1152225 startup-multiple-configure-environment-services.csproj Resolve 0:00.0016823 startup-multiple-configure-environment-services.csproj (netcoreapp3.1) Project startup-multiple-configure-environment-services has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/startup/suppress-status-messages/suppress-status-messages.csproj Evaluate 0:00.2625475 suppress-status-messages.csproj Build 0:00.1315650 suppress-status-messages.csproj Resolve 0:00.0016888 suppress-status-messages.csproj (netcoreapp3.1) Project suppress-status-messages has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/syndications/syndication-1/syndication.csproj Evaluate 0:00.2652982 syndication.csproj Build 0:00.1184458 syndication.csproj Resolve 0:00.0016873 syndication.csproj (netcoreapp3.1) Project syndication has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/syndications/syndication-2/syndication-2.csproj Evaluate 0:00.2617645 syndication-2.csproj Build 0:00.1352288 syndication-2.csproj Resolve 0:00.0017595 syndication-2.csproj (netcoreapp3.1) Project syndication-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/syndications/syndication-3/syndication-3.csproj Evaluate 0:00.2645936 syndication-3.csproj Build 0:00.1254004 syndication-3.csproj Resolve 0:00.0016662 syndication-3.csproj (netcoreapp3.1) Project syndication-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/uri-helper/uri-helper-build-absolute/uri-helper-build-absolute.csproj Evaluate 0:00.2597781 uri-helper-build-absolute.csproj Build 0:00.1295563 uri-helper-build-absolute.csproj Resolve 0:00.0016733 uri-helper-build-absolute.csproj (netcoreapp3.1) Project uri-helper-build-absolute has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/uri-helper/uri-helper-from-absolute/uri-helper-from-absolute.csproj Evaluate 0:00.2666365 uri-helper-from-absolute.csproj Build 0:00.1291530 uri-helper-from-absolute.csproj Resolve 0:00.0016940 uri-helper-from-absolute.csproj (netcoreapp3.1) Project uri-helper-from-absolute has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/uri-helper/uri-helper-get-display-url/uri-helper-get-display-url.csproj Evaluate 0:00.3032863 uri-helper-get-display-url.csproj Build 0:00.1110350 uri-helper-get-display-url.csproj Resolve 0:00.0017118 uri-helper-get-display-url.csproj (netcoreapp3.1) Project uri-helper-get-display-url has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/uri-helper/uri-helper-get-encoded-path-and-query/uri-helper-get-encoded-path-and-query.csproj Evaluate 0:00.2894493 uri-helper-get-encoded-path-and-query.csproj Build 0:00.1081576 uri-helper-get-encoded-path-and-query.csproj Resolve 0:00.0016662 uri-helper-get-encoded-path-and-query.csproj (netcoreapp3.1) Project uri-helper-get-encoded-path-and-query has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/uri-helper/uri-helper-get-encoded-url/uri-helper-get-encoded-url.csproj Evaluate 0:00.2955900 uri-helper-get-encoded-url.csproj Build 0:00.1030674 uri-helper-get-encoded-url.csproj Resolve 0:00.0017151 uri-helper-get-encoded-url.csproj (netcoreapp3.1) Project uri-helper-get-encoded-url has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/utils/http-status-codes/http-status-codes.csproj Evaluate 0:00.2835655 http-status-codes.csproj Build 0:00.1080595 http-status-codes.csproj Resolve 0:00.0016626 http-status-codes.csproj (netcoreapp3.1) Project http-status-codes has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/utils/media-type-names/media-type-names.csproj Evaluate 0:00.2978435 media-type-names.csproj Build 0:00.0995527 media-type-names.csproj Resolve 0:00.0016774 media-type-names.csproj (netcoreapp3.1) Project media-type-names has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/utils/media-type-names-2/media-type-names-2.csproj Evaluate 0:00.2878897 media-type-names-2.csproj Build 0:00.1102011 media-type-names-2.csproj Resolve 0:00.0016843 media-type-names-2.csproj (netcoreapp3.1) Project media-type-names-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-sockets/web-sockets-1/web-sockets.csproj Evaluate 0:00.2919604 web-sockets.csproj Build 0:00.0975471 web-sockets.csproj Resolve 0:00.0017492 web-sockets.csproj (netcoreapp3.1) Project web-sockets has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-sockets/web-sockets-2/web-sockets-2.csproj Evaluate 0:00.2835590 web-sockets-2.csproj Build 0:00.1100235 web-sockets-2.csproj Resolve 0:00.0017641 web-sockets-2.csproj (netcoreapp3.1) Project web-sockets-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-sockets/web-sockets-3/web-sockets-3.csproj Evaluate 0:00.2937344 web-sockets-3.csproj Build 0:00.0994013 web-sockets-3.csproj Resolve 0:00.0017061 web-sockets-3.csproj (netcoreapp3.1) Project web-sockets-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-sockets/web-sockets-4/web-sockets-4.csproj Evaluate 0:00.2485703 web-sockets-4.csproj Build 0:00.1083797 web-sockets-4.csproj Resolve 0:00.0016780 web-sockets-4.csproj (netcoreapp3.1) Project web-sockets-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-sockets/web-sockets-5/web-sockets-5.csproj Evaluate 0:00.2849259 web-sockets-5.csproj Build 0:00.1047473 web-sockets-5.csproj Resolve 0:00.0017058 web-sockets-5.csproj (netcoreapp3.1) Project web-sockets-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-utilities/web-utilities-query-helpers/web-utilities-query-helper.csproj Evaluate 0:00.2593559 web-utilities-query-helper.csproj Build 0:00.1401386 web-utilities-query-helper.csproj Resolve 0:00.0022730 web-utilities-query-helper.csproj (netcoreapp3.1) Project web-utilities-query-helper has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-utilities/web-utilities-query-helpers-2/web-utilities-query-helper-2.csproj Evaluate 0:00.2604337 web-utilities-query-helper-2.csproj Build 0:00.1338679 web-utilities-query-helper-2.csproj Resolve 0:00.0016732 web-utilities-query-helper-2.csproj (netcoreapp3.1) Project web-utilities-query-helper-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/web-utilities/web-utilities-reason-phrases/web-utilities-reason-phrases.csproj Evaluate 0:00.2645869 web-utilities-reason-phrases.csproj Build 0:00.1375956 web-utilities-reason-phrases.csproj Resolve 0:00.0016711 web-utilities-reason-phrases.csproj (netcoreapp3.1) Project web-utilities-reason-phrases has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/azure-functions/DbContextExample/Data/DataLayer.csproj Evaluate 0:00.1674828 DataLayer.csproj Build 0:00.0885523 DataLayer.csproj Resolve 0:00.0009727 DataLayer.csproj (netcoreapp3.1) Project DataLayer has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/azure-functions/DbContextExample/Function/Function.csproj Evaluate 0:00.1703578 Function.csproj Build 0:00.4288885 Function.csproj Resolve 0:00.0075905 Function.csproj (netcoreapp3.1) Project Function has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/azure-functions/StartupExample/StartupExample/StartupExample.csproj Evaluate 0:00.1596233 StartupExample.csproj Build 0:00.1194046 StartupExample.csproj Resolve 0:00.0009448 StartupExample.csproj (netcoreapp3.1) Project StartupExample has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/bedrock/echo/client/echo-client.csproj Evaluate 0:00.2746258 echo-client.csproj Build 0:00.1834809 echo-client.csproj Resolve 0:00.0016944 echo-client.csproj (netcoreapp3.1) Project echo-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/bedrock/echo/server/echo-server.csproj Evaluate 0:00.2696387 echo-server.csproj Build 0:00.1732271 echo-server.csproj Resolve 0:00.0016704 echo-server.csproj (netcoreapp3.1) Project echo-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/MultiApps/App1/App1.csproj Evaluate 0:00.2493407 App1.csproj Build 0:00.2191540 App1.csproj Resolve 0:00.0009444 App1.csproj (netcoreapp3.1) Project App1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/MultiApps/App2/App2.csproj Evaluate 0:00.2585228 App2.csproj Build 0:00.1887023 App2.csproj Resolve 0:00.0009084 App2.csproj (netcoreapp3.1) Project App2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/blazor-ss/MultiApps/AppHost/AppHost.csproj Evaluate 0:00.3508879 AppHost.csproj Build 0:00.7657721 AppHost.csproj Resolve 0:00.0105050 AppHost.csproj (netcoreapp3.1) Project AppHost has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc/client/grpc-client.csproj Evaluate 0:00.3039122 grpc-client.csproj Build 0:00.2340051 grpc-client.csproj Resolve 0:00.0024650 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc/server/grpc-server.csproj Evaluate 0:00.2986478 grpc-server.csproj Build 0:00.2068949 grpc-server.csproj Resolve 0:00.0018871 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-10/client/grpc-client.csproj Evaluate 0:00.2972144 grpc-client.csproj Build 0:00.2440273 grpc-client.csproj Resolve 0:00.0021510 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-10/server/grpc-server.csproj Evaluate 0:00.3193806 grpc-server.csproj Build 0:00.2035833 grpc-server.csproj Resolve 0:00.0018939 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-11/client/grpc-client.csproj Evaluate 0:00.3146396 grpc-client.csproj Build 0:00.1776797 grpc-client.csproj Resolve 0:00.0017390 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-11/server/grpc-server.csproj Evaluate 0:00.3274009 grpc-server.csproj Build 0:00.1948247 grpc-server.csproj Resolve 0:00.0016882 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-12/client/GrpcClient.csproj Evaluate 0:00.3143123 GrpcClient.csproj Build 0:00.2054786 GrpcClient.csproj Resolve 0:00.0008174 GrpcClient.csproj (netstandard2.1) Project GrpcClient has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-12/server/grpc-server.csproj Evaluate 0:00.2987647 grpc-server.csproj Build 0:00.1067819 grpc-server.csproj Resolve 0:00.0016853 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-2/client/grpc-client.csproj Evaluate 0:00.3248869 grpc-client.csproj Build 0:00.1989838 grpc-client.csproj Resolve 0:00.0016976 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-2/server/grpc-server.csproj Evaluate 0:00.3226750 grpc-server.csproj Build 0:00.1707287 grpc-server.csproj Resolve 0:00.0228931 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-3/client/grpc-client.csproj Evaluate 0:00.3088868 grpc-client.csproj Build 0:00.2330690 grpc-client.csproj Resolve 0:00.0017729 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-3/server/grpc-server.csproj Evaluate 0:00.2561833 grpc-server.csproj Build 0:00.1950276 grpc-server.csproj Resolve 0:00.0017512 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-4/client/grpc-client.csproj Evaluate 0:00.3058114 grpc-client.csproj Build 0:00.2358593 grpc-client.csproj Resolve 0:00.0017266 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-4/server/grpc-server.csproj Evaluate 0:00.2971089 grpc-server.csproj Build 0:00.2174716 grpc-server.csproj Resolve 0:00.0017219 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-5/client/grpc-client.csproj Evaluate 0:00.2940596 grpc-client.csproj Build 0:00.2395468 grpc-client.csproj Resolve 0:00.0017184 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-5/server/grpc-server.csproj Evaluate 0:00.3122250 grpc-server.csproj Build 0:00.1944239 grpc-server.csproj Resolve 0:00.0017799 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-6/client/grpc-client.csproj Evaluate 0:00.3285823 grpc-client.csproj Build 0:00.1968138 grpc-client.csproj Resolve 0:00.0017538 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-6/server/grpc-server.csproj Evaluate 0:00.3165945 grpc-server.csproj Build 0:00.1937845 grpc-server.csproj Resolve 0:00.0016909 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-7/client/grpc-client.csproj Evaluate 0:00.3273012 grpc-client.csproj Build 0:00.2029453 grpc-client.csproj Resolve 0:00.0017204 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-7/server/grpc-server.csproj Evaluate 0:00.3217430 grpc-server.csproj Build 0:00.2252939 grpc-server.csproj Resolve 0:00.0017156 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-8/client/grpc-client.csproj Evaluate 0:00.3021503 grpc-client.csproj Build 0:00.2089315 grpc-client.csproj Resolve 0:00.0017108 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-8/server/grpc-server.csproj Evaluate 0:00.2958916 grpc-server.csproj Build 0:00.2487674 grpc-server.csproj Resolve 0:00.0017320 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj Evaluate 0:00.2951559 grpc-client.csproj Build 0:00.1546605 grpc-client.csproj Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj' with message: google/protobuf/Empty.proto: (0, 0): File not found.' Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj' with message: src/billboard.proto: (4, 1): Import "google/protobuf/Empty.proto" was not found or had errors.' Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/client/grpc-client.csproj' with message: src/billboard.proto: (7, 20): "google.protobuf.Empty" is not defined.' Resolve 0:00.0036151 grpc-client.csproj (netcoreapp3.1) Project grpc-client has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj Evaluate 0:00.2966113 grpc-server.csproj Build 0:00.1536641 grpc-server.csproj Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj' with message: google/protobuf/Empty.proto: (0, 0): File not found.' Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj' with message: src/billboard.proto: (4, 1): Import "google/protobuf/Empty.proto" was not found or had errors.' Project Load Failure: 'Msbuild failed when processing the file '/mnt/d/scratch/practical-aspnetcore/projects/grpc/grpc-9/server/grpc-server.csproj' with message: src/billboard.proto: (7, 20): "google.protobuf.Empty" is not defined.' Resolve 0:00.0020967 grpc-server.csproj (netcoreapp3.1) Project grpc-server has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-1/mvc-localization.csproj Evaluate 0:00.2730376 mvc-localization.csproj Build 0:00.1360426 mvc-localization.csproj Resolve 0:00.0016864 mvc-localization.csproj (netcoreapp3.1) Project mvc-localization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-10/mvc-localization-10.csproj Evaluate 0:00.2777199 mvc-localization-10.csproj Build 0:00.1585343 mvc-localization-10.csproj Resolve 0:00.0017248 mvc-localization-10.csproj (netcoreapp3.1) Project mvc-localization-10 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-2/mvc-localization-2.csproj Evaluate 0:00.2682109 mvc-localization-2.csproj Build 0:00.1295877 mvc-localization-2.csproj Resolve 0:00.0017188 mvc-localization-2.csproj (netcoreapp3.1) Project mvc-localization-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-3/mvc-localization-3.csproj Evaluate 0:00.2407081 mvc-localization-3.csproj Build 0:00.1319133 mvc-localization-3.csproj Resolve 0:00.0016821 mvc-localization-3.csproj (netcoreapp3.1) Project mvc-localization-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-4/MvcLocalization.csproj Evaluate 0:00.2714561 MvcLocalization.csproj Build 0:00.1300721 MvcLocalization.csproj Resolve 0:00.0016948 MvcLocalization.csproj (netcoreapp3.1) Project MvcLocalization has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-5/mvc-localization-5.csproj Evaluate 0:00.3045555 mvc-localization-5.csproj Build 0:00.1267491 mvc-localization-5.csproj Resolve 0:00.0017015 mvc-localization-5.csproj (netcoreapp3.1) Project mvc-localization-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-6/mvc-localization-6.csproj Evaluate 0:00.3151587 mvc-localization-6.csproj Build 0:00.1343877 mvc-localization-6.csproj Resolve 0:00.0016930 mvc-localization-6.csproj (netcoreapp3.1) Project mvc-localization-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-8/mvc-localization-8.csproj Evaluate 0:00.2927500 mvc-localization-8.csproj Build 0:00.1182049 mvc-localization-8.csproj Resolve 0:00.0017497 mvc-localization-8.csproj (netcoreapp3.1) Project mvc-localization-8 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/localization/mvc-localization-9/mvc-localization-9.csproj Evaluate 0:00.2879604 mvc-localization-9.csproj Build 0:00.1344727 mvc-localization-9.csproj Resolve 0:00.0016940 mvc-localization-9.csproj (netcoreapp3.1) Project mvc-localization-9 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-1/routing-1.csproj Evaluate 0:00.2985959 routing-1.csproj Build 0:00.1000440 routing-1.csproj Resolve 0:00.0017207 routing-1.csproj (netcoreapp3.1) Project routing-1 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-2/routing-2.csproj Evaluate 0:00.2865760 routing-2.csproj Build 0:00.1086236 routing-2.csproj Resolve 0:00.0016879 routing-2.csproj (netcoreapp3.1) Project routing-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-3/routing-3.csproj Evaluate 0:00.2889856 routing-3.csproj Build 0:00.0967246 routing-3.csproj Resolve 0:00.0016641 routing-3.csproj (netcoreapp3.1) Project routing-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-4/routing-4.csproj Evaluate 0:00.2830489 routing-4.csproj Build 0:00.1079494 routing-4.csproj Resolve 0:00.0016618 routing-4.csproj (netcoreapp3.1) Project routing-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-5/routing-5.csproj Evaluate 0:00.3067467 routing-5.csproj Build 0:00.1084728 routing-5.csproj Resolve 0:00.0017266 routing-5.csproj (netcoreapp3.1) Project routing-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-6/routing-6.csproj Evaluate 0:00.2841454 routing-6.csproj Build 0:00.1300999 routing-6.csproj Resolve 0:00.0016889 routing-6.csproj (netcoreapp3.1) Project routing-6 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-7/routing-7.csproj Evaluate 0:00.2718484 routing-7.csproj Build 0:00.1435363 routing-7.csproj Resolve 0:00.0017579 routing-7.csproj (netcoreapp3.1) Project routing-7 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-8/routing-8.csproj Evaluate 0:00.2660171 routing-8.csproj Build 0:00.1295031 routing-8.csproj Resolve 0:00.0016792 routing-8.csproj (netcoreapp3.1) Project routing-8 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/routing/routing-9/routing-9.csproj Evaluate 0:00.2642059 routing-9.csproj Build 0:00.1503375 routing-9.csproj Resolve 0:00.0017935 routing-9.csproj (netcoreapp3.1) Project routing-9 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-1/tag-helper.csproj Evaluate 0:00.2695539 tag-helper.csproj Build 0:00.1571000 tag-helper.csproj Resolve 0:00.0017067 tag-helper.csproj (netcoreapp3.1) Project tag-helper has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-2/tag-helper-2.csproj Evaluate 0:00.2688313 tag-helper-2.csproj Build 0:00.1716708 tag-helper-2.csproj Resolve 0:00.0017235 tag-helper-2.csproj (netcoreapp3.1) Project tag-helper-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-3/tag-helper-3.csproj Evaluate 0:00.2662796 tag-helper-3.csproj Build 0:00.1560652 tag-helper-3.csproj Resolve 0:00.0017164 tag-helper-3.csproj (netcoreapp3.1) Project tag-helper-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-4/tag-helper-4.csproj Evaluate 0:00.2691026 tag-helper-4.csproj Build 0:00.1804491 tag-helper-4.csproj Resolve 0:00.0017000 tag-helper-4.csproj (netcoreapp3.1) Project tag-helper-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-5/tag-helper-5.csproj Evaluate 0:00.2694353 tag-helper-5.csproj Build 0:00.1542993 tag-helper-5.csproj Resolve 0:00.0017056 tag-helper-5.csproj (netcoreapp3.1) Project tag-helper-5 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-img/tag-helper-img.csproj Evaluate 0:00.2701869 tag-helper-img.csproj Build 0:00.1697951 tag-helper-img.csproj Resolve 0:00.0017139 tag-helper-img.csproj (netcoreapp3.1) Project tag-helper-img has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/tag-helper/tag-helper-link/tag-helper-link.csproj Evaluate 0:00.2752764 tag-helper-link.csproj Build 0:00.1589302 tag-helper-link.csproj Resolve 0:00.0016981 tag-helper-link.csproj (netcoreapp3.1) Project tag-helper-link has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/view-component/view-component-1/view-component.csproj Evaluate 0:00.3164073 view-component.csproj Build 0:00.1768513 view-component.csproj Resolve 0:00.0017232 view-component.csproj (netcoreapp3.1) Project view-component has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/view-component/view-component-2/view-component-2.csproj Evaluate 0:00.2812558 view-component-2.csproj Build 0:00.1565310 view-component-2.csproj Resolve 0:00.0016612 view-component-2.csproj (netcoreapp3.1) Project view-component-2 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/view-component/view-component-3/view-component-3.csproj Evaluate 0:00.3083954 view-component-3.csproj Build 0:00.1693767 view-component-3.csproj Resolve 0:00.0017424 view-component-3.csproj (netcoreapp3.1) Project view-component-3 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/mvc/view-component/view-component-4/view-component-4.csproj Evaluate 0:00.2900470 view-component-4.csproj Build 0:00.1347264 view-component-4.csproj Resolve 0:00.0017125 view-component-4.csproj (netcoreapp3.1) Project view-component-4 has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/multi-tenant/Host/Host.csproj Evaluate 0:00.3420803 Host.csproj Build 0:00.1392268 Host.csproj Resolve 0:00.0016946 Host.csproj (netcoreapp3.1) Project Host has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/ForumModule/ForumModule.csproj Evaluate 0:00.2721523 ForumModule.csproj Build 0:00.1212889 ForumModule.csproj Resolve 0:00.0009362 ForumModule.csproj (netcoreapp3.1) Project ForumModule has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/Host/Host.csproj Evaluate 0:00.3216315 Host.csproj Build 0:00.7824238 Host.csproj Evaluate 0:00.2649387 TicketModule.csproj Build 0:00.1046565 TicketModule.csproj Evaluate 0:00.0000881 TicketModule.csproj Build 0:00.0713353 TicketModule.csproj Resolve 0:00.0009240 TicketModule.csproj (netcoreapp3.1) Project Load Warning: 'Found project reference without a matching metadata reference: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/TicketModule/TicketModule.csproj' Resolve 0:00.4602910 Host.csproj (netcoreapp3.1) Project Host has .cs documents Loading Project: /mnt/d/scratch/practical-aspnetcore/projects/orchard-core/routing/TicketModule/TicketModule.csproj Unhandled exception. System.ArgumentException: 'TicketModule' is already part of the workspace. at Microsoft.CodeAnalysis.Workspace.CheckProjectIsNotInCurrentSolution(ProjectId projectId) at Microsoft.CodeAnalysis.Workspace.OnProjectAdded_NoLock(ProjectInfo projectInfo, Boolean silent) at Microsoft.CodeAnalysis.Workspace.OnProjectAdded(ProjectInfo projectInfo, Boolean silent) at Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.OpenProjectAsync(String projectFilePath, ILogger msbuildLogger, IProgress`1 progress, CancellationToken cancellationToken) at RoslynWalker_DotNet5_Sample.Program.LoadProjectsAsync(String projectFilePath, MSBuildWorkspace workspace) in /mnt/d/scratch/RoslynTesting/RoslynWalker_DotNet5_Sample/Program.cs:line 36 at RoslynWalker_DotNet5_Sample.Program.Main(String[] args) in /mnt/d/scratch/RoslynTesting/RoslynWalker_DotNet5_Sample/Program.cs:line 21 at RoslynWalker_DotNet5_Sample.Program.

(String[] args) ```

jmarolf commented 2 years ago

@abhijitparkhi1983 if you could modify your project file to look like this:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Build.Locator" Version="1.4.1" />
    <PackageReference Include="Microsoft.CodeAnalysis" Version="4.0.1" />
    <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.0.1" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
    <PackageReference Include="Microsoft.Build" Version="16.11.0" ExcludeAssets="Runtime" PrivateAssets="All" />
  </ItemGroup>

</Project>

and your program file to look like this:

using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Build.Framework;
using Microsoft.Build.Locator;
using Microsoft.Build.Logging;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.MSBuild;

namespace RoslynWalker_DotNet5_Sample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string[] projectFilesToLoad = Directory.GetFiles(args[0], "*.csproj", SearchOption.AllDirectories);
            Console.WriteLine("Projects to Parse: " + projectFilesToLoad);
            string outputDirectory = Path.GetTempPath(); // Change this to whatever path is most convenient
            foreach (string projectFilePath in projectFilesToLoad)
            {
                using MSBuildWorkspace workspace = CreateWorkspace();
                Console.WriteLine("Loading Project: " + projectFilePath);
                await LoadProjectsAsync(projectFilePath, outputDirectory, workspace);
            }
        }

        private static MSBuildWorkspace CreateWorkspace()
        {
            if (MSBuildLocator.CanRegister)
            {
                MSBuildLocator.RegisterDefaults();
            }

            MSBuildWorkspace workspace = MSBuildWorkspace.Create();
            workspace.LoadMetadataForReferencedProjects = true;
            workspace.WorkspaceFailed += ReportWorkspaceFailure;
            return workspace;
        }

        private static async Task LoadProjectsAsync(string projectFilePath, string outputDirectory, MSBuildWorkspace workspace)
        {
            ILogger logger = GetBinaryLoggerForProject(projectFilePath, outputDirectory);
            Project project = await workspace.OpenProjectAsync(projectFilePath, logger, Progress.Instance);
            if (project.Documents.Any())
                Console.WriteLine($"Project {project.Name} has .cs documents");
            else
                Console.WriteLine($"Project {project.Name} does not have any .cs documents");
        }

        private static ILogger GetBinaryLoggerForProject(string projectName, string outputDirectory)
        {
            string binaryLogPath = Path.Combine(outputDirectory, $"{Path.GetFileNameWithoutExtension(projectName)}.binlog");
            // because we are using MSBuild apis in this method MSBuildLocator.RegisterDefaults() _must_ be called before
            // execution enters this method or the runtime will fail saying it cannot load required assemblies
            return new BinaryLogger()
            {
                Parameters = binaryLogPath,
                Verbosity = LoggerVerbosity.Diagnostic,
            };
        }

        private static void ReportWorkspaceFailure(object sender, WorkspaceDiagnosticEventArgs e)
        {
            if (e.Diagnostic.Kind == WorkspaceDiagnosticKind.Failure)
            {
                Console.WriteLine($"Project Load Failure: '{e.Diagnostic.Message}'");
            }
            else if (e.Diagnostic.Kind == WorkspaceDiagnosticKind.Warning)
            {
                Console.WriteLine($"Project Load Warning: '{e.Diagnostic.Message}'");
            }
            else
            {
                Console.WriteLine($"Unknown Project Load Issue: '{e.Diagnostic.Message}'");
            }
        }

        private class Progress : IProgress<ProjectLoadProgress>
        {
            public static Progress Instance { get; } = new Progress();

            public void Report(ProjectLoadProgress loadProgress)
            {
                string projectDisplay = Path.GetFileName(loadProgress.FilePath);
                if (loadProgress.TargetFramework != null)
                {
                    projectDisplay += $" ({loadProgress.TargetFramework})";
                }

                Console.WriteLine($"{loadProgress.Operation,-15} {loadProgress.ElapsedTime,-15:m\\:ss\\.fffffff} {projectDisplay}");
            }
        }
    }
}

and run that program in your environment I would like to take a look at the *.binlog files that it produces. That should tell me what is going in wrong in your environment.

abhijitparkhi1983 commented 2 years ago

Are you building you console app RoslynWalker_DotNet5_Sample on linux? Yes thats what i was doing. I am building the RoslynWalker_DotNet5_Sample application on a Ubuntu 20.4 machine.

Will check on the above changes and will share the logs.

abhijitparkhi1983 commented 2 years ago

Please find the *.binlog files attached logFiles.zip

abhijitparkhi1983 commented 2 years ago

Hi @jmarolf do you have any further input on this thread based on the log files shared. Please let me know

jmarolf commented 2 years ago

I do no know what you did to capture those logs but they are all empty

abhijitparkhi1983 commented 2 years ago

I ran the code on that you have shared above which generated the binlog file for each csproj project. I can see that there are couple of files with 2kb size on disk. Attaching one of it here.

uri-helper-get-encoded-path-and-query.zip

jmarolf commented 2 years ago

That zip does not appear to contain a binlog file what do you see when you open it on https://live.msbuildlog.com/?

abhijitparkhi1983 commented 2 years ago

uri-helper-get-encoded-path-and-query This is what I can see

jmarolf commented 2 years ago

@KirillOsenkov are binlogs not capturable on linux machines?

KirillOsenkov commented 2 years ago

No, it should all work, no idea what went wrong, perhaps a very old MSBuild?

abhijitparkhi1983 commented 2 years ago

Do you guys require any further information ?

KirillOsenkov commented 2 years ago

Ah, I see, I didn't read the details earlier.

What is happening is you're passing the BinaryLogger to the Roslyn workspace, this is not the same way how MSBuild uses them. I haven't investigated how the Roslyn workspace hooks up the loggers, but it's likely something is going wrong there. MSBuild goes through the LoggingService, and it's all very complicated. It would need to be investigated why the loggers seem to receive no events in this case.

KirillOsenkov commented 2 years ago

Yes, it seems that the MSBuildWorkspace is not quite doing the right thing with loggers.

Loggers are set to BuildParameters here:

https://github.com/dotnet/roslyn/blob/7f51127d775f9872103bc393d544b71e3e984890/src/Workspaces/Core/MSBuild/MSBuild/Build/ProjectBuildManager.cs#L169

Here I'll try to sketch roughly how I think it should be done:

        private readonly MuxLogger muxLogger = new MuxLogger()
        {
            Verbosity = LoggerVerbosity.Diagnostic
        };

...
                    muxLogger.IncludeTaskInputs = hasBinlog;

                    var forwardingLoggerDescription = new LoggerDescription(
                        loggerClassName: typeof(ConfigurableForwardingLogger).FullName,
                        loggerAssemblyName: typeof(ConfigurableForwardingLogger).Assembly.GetName().FullName,
                        loggerAssemblyFile: null,
                        loggerSwitchParameters: "",
                        verbosity: muxLogger.Verbosity);

                    var forwardingLoggerRecord = new ForwardingLoggerRecord(
                        muxLogger,
                        forwardingLoggerDescription);

                    var parameters = new BuildParameters(projectCollectionToUse)
                    {
                        DisableInProcNode = true,
                        DiscardBuildResults = true,
                        EnableNodeReuse = true,
                        LogInitialPropertiesAndItems = hasBinlog,
                        LogTaskInputs = hasBinlog,
                        MaxNodeCount = maxDesignTimeBuildParallelism,
                        ResetCaches = true,
                    };

                    parameters.ForwardingLoggers = new[]
                    {
                        forwardingLoggerRecord
                    };
...
                foreach (var logger in loggers)
                {
                    muxLogger.RegisterLogger(buildSubmission.SubmissionId, logger);
                }

                var taskCompletionSource = new TaskCompletionSource<BuildResult>();

                buildSubmission.ExecuteAsync(s =>
                {
                    taskCompletionSource.TrySetResult(s.BuildResult);
                    muxLogger.UnregisterLoggers(s.SubmissionId);
                }, context: null);

                await taskCompletionSource.Task;
abhijitparkhi1983 commented 2 years ago

Thanks @KirillOsenkov Is there any alternative that can be used in this case?

KirillOsenkov commented 2 years ago

You can try Buildalyzer

abhijitparkhi1983 commented 2 years ago

Ok let me try this one https://github.com/daveaglick/Buildalyzer