处理文件 '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
我正在尝试使用 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