gpt4 book ai didi

roslyn - Roslynworkspace.OpenSolutionAsync()。项目总是空的吗?

转载 作者:行者123 更新时间:2023-12-03 13:27:54 25 4
gpt4 key购买 nike

我正在尝试创建一个自托管的WebAPI 2.0项目,该项目允许您通过API打开/探索/构建.sln解决方案。

这是我的一个 Controller 中的代码,应该返回给定.sln路径的项目列表:

public async Task<IHttpActionResult> GetProjects(string slnPath = "")
{
var workspace = MSBuildWorkspace.Create();
var solution = await workspace.OpenSolutionAsync(slnPath);
var projects = solution.Projects;
}

我希望项目将解决方案中的项目保留下来,但是根据调试器, solution.Projectssolution.ProjectIds似乎总是空的。

我已经尝试过使用多个 .sln文件,可以在Visual Studio中打开所有文件,然后查看它们中是否包含项目。

我看过 this question,但是我的项目不是Visual Studio插件,而是从命令行应用程序调用的类库。

最佳答案

通常,这是由以下几种原因之一引起的,按照通用性顺序排列:

  • 您缺少Microsoft.CodeAnalysis.CSharp.Workspaces.dll或Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll的副本。确保在运行项目时,这些DLL位于主Microsoft.CodeAnalysis.Workspaces.dll旁边。
  • 您正在加载不支持的项目类型的解决方案。除无项目的网站项目外,我们应支持任何项目类型。类库应该可以正常工作。
  • 我们有一个错误,导致我们对您特定的项目类型处理不当。如果是这种情况,请在GitHub上提交错误。
  • 关于roslyn - Roslynworkspace.OpenSolutionAsync()。项目总是空的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070323/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com