Unable to use Microsoft.CodeAnalysis.Workspaces.MSBuild package
Trying to analyze my solution using the code analyzers. So wrote up a simple script:
async Task Main()
{
var solutionPath = @"path to .sln file";
await AnalyzeSolution(solutionPath);
}
async Task AnalyzeSolution(string solutionPath)
{
var progress = SimpleProgress.Create((ProjectLoadProgress p) =>
{
$"{p.Operation}: {p.FilePath} ({p.TargetFramework})".Dump();
});
using var ws = MSBuildWorkspace.Create();
var sln = await ws.OpenSolutionAsync(solutionPath, progress);
...
}
public static class SimpleProgress
{
public static SimpleProgress<T> Create<T>(Action<T> report) => new(report);
}
public class SimpleProgress<T>(Action<T> report) : IProgress<T>
{
public void Report(T value) => report?.Invoke(value);
}
Trying to run it, if fails with an error:
The build host could not be found at 'C:\Users\jeff.mercado\.nuget\packages\Microsoft.CodeAnalysis.Workspaces.MSBuild\4.13.0\lib\net9.0\BuildHost-netcore\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll'
I've looked through the code and it uses the assembly's path to determine where the build host is which works in a regular app since the assemblies are put in a same place, including the build host binaries.

Since LINQPad is referencing the files directly from the nuget cache, I guess a build step needs to be performed to put the files there (which I can do to work around this).
Is this something that could be fixed?
Comments
-
Have you tried the "copy local" option in LINQPad's properties dialog? (Press F4 and click Advanced).
-
Ah! That's what that setting is for. Got it.
