处理文件 'FILE LOCATION' 时 Msbuild 失败并显示消息:找不到指定的 SDK 'Microsoft.NET.Sdk'

Msbuild failed when processing the file 'FILE LOCATION' with message: The SDK 'Microsoft.NET.Sdk' specified could not be found

我正在尝试使用 Roslyn 获取 object,然后探索整个解决方案并找到它的声明位置。那部分代码甚至还没有开始,因为我无法正确设置我的工作区。我的代码如下:

var projectPath = @"C:\Repo\Pineapple\Pineapple.sln";
            using (var workspace = MSBuildWorkspace.Create())
            {
                workspace.LoadMetadataForReferencedProjects = true;
                var solution = workspace.OpenSolutionAsync(projectPath).Result;
                ImmutableList<WorkspaceDiagnostic> diagnostics = workspace.Diagnostics;
                foreach (var diagnostic in diagnostics)
                {
                    Console.WriteLine(diagnostic.Message);
                }

                foreach (var project in solution.Projects)
                {
                    foreach (var document in project.Documents)
                    {
                        Console.WriteLine(project.Name + "\t\t\t" + document.Name);
                    }
                }
            }

第二组 foreach 循环最初是空的,提示我探索诊断。我收到的错误消息列在标题中,并显示在我尝试访问的所有文件中。我在 .NET Core 3.1 中使用 Visual Studio 2019。如果它还不是很明显,我对此比较陌生,所以任何帮助将不胜感激。谢谢!

由于我对您要加载的项目了解不多,所以我改用了 Nodatime,并且通过进行以下更改,我成功地使用您的代码段加载了它:

  • 添加对 Microsoft.Build.Locator NuGet 包的引用
  • 在创建 MSBuildWorkspace
  • 之前调用 MSBuildLocator.RegisterDefaults();

完成上述步骤后,我还必须添加对这些 NuGet 包的引用:

  • NuGet.Frameworks
  • NuGet.Packaging
  • NuGet.ProjectModel
  • NuGet.Versioning