"Parameter "toolsPath“不能为空。”调用 MSBuildWorkspace.OpenProjectAsync() 时

"Parameter "toolsPath" cannot be null." when calling MSBuildWorkspace.OpenProjectAsync()

我有一个包含许多 C# 项目的 Visual Studio 解决方案。我目前正在尝试在构建和运行项目 1 的解决方案中构建一个新的 C# 项目,但是在调用 MSBuildWorkspace.OpenProjectAsync:

时出现运行时错误

Parameter "toolsPath" cannot be null.'

我不确定这是指什么参数。我的代码如下:

using System;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.MSBuild;

namespace RunAllProjects
{
    class Program
    {
        static async Task Main()
        {
            using MSBuildWorkspace ws = MSBuildWorkspace.Create();
            var project = await ws.OpenProjectAsync("../../../../1/1.csproj");
            Console.WriteLine(project.Name);
        }
    }
}

知道这个错误可能来自哪里吗?谢谢!

在调用 MSBuildWorkspace.Create() 之前,先调用 MSBuildLocator.RegisterDefaults()。有关于如何使用 MSBuildLocator here.

的说明