Is there any reason why MSBuild is not located from within LinqPad?

async Task Main()
{
    if (!MSBuildLocator.IsRegistered)
    {
        MSBuildLocator.RegisterDefaults();
    }

    using (var w = MSBuildWorkspace.Create())
    {
        var sln = await w.OpenSolutionAsync(@"...");
    }
}

MSBuildLocator.RegisterDefaults(); throws

InvalidOperationException: No instances of MSBuild could be detected.
Try calling RegisterInstance or RegisterMSBuildPath to manually register one.

Yet running same code as console application works fine.

Comments

  • I can't think of why that wouldn't work - it works for me when I add a package reference to Microsoft.Build.Locator.

  • I found the reason.
    It looks like VS update removed SDK for .NET 7 and installed SDK for .NET 8
    I am running LinqPad 7. When I installed .NET 7 SDK it started working.
    Thanks.

  • Thanks for the update. I've also experienced a .NET installation disappearing while in use, usually manifesting as file-not-found errors when running a query.