【发布时间】:2017-09-05 21:30:55
【问题描述】:
我们正在使用 C# Roslyn 版本 2.3.1 以编程方式打开 .csproj 项目。
为此,我们使用 Roslyn 提供的以下标准 API 代码打开 .csproj 并浏览每个 Microsoft.CodeAnalysis.Document 以获取 Document 的语法树: p>
public void BrowsProjectDocuments(string projectPath)
{
var workspace = MSBuildWorkspace.Create();
workspace.WorkspaceFailed += WorkSpaceFailed;
Project currentProject = workspace.OpenProjectAsync(projectPath).Result;
foreach(Document document in currentProject.Documents)
{
Task<SyntaxTree> documentSyntaxTree = document.GetSyntaxTreeAsync();
.....
.....
}
}
private static void WorkSpaceFailed(object sender, WorkspaceDiagnosticEventArgs e)
{
Console.WriteLine(e.Diagnostic.Message);
}
当我们使用 .NET Framework 4.6.1/4.6.2 和 Roslyn 2.3.1 在 Windows 7 上运行上述代码时,代码运行良好,我们得到了每个文档所需的语法树。
但是当我们尝试在 Ubuntu 16.04 上运行相同的代码时,currentProject.Documents 返回 0 计数,我们会收到以下错误WorkSpaceFailed 事件挂钩:
Msbuild 在处理文件时失败 '/home/user/CSharp/RoslynSamples/AplModel/AplModel.csproj' 带有消息: 无法加载字段类型 'Microsoft.Build.BackEnd.Logging.LoggingService:_loggingQueue' (20) 由于:无法加载文件或程序集 'System.Threading.Tasks.Dataflow,版本=4.5.24.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。 程序集:System.Threading.Tasks.Dataflow,版本=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 类型:成员:
我们已经在 Ubuntu 机器上安装了 mono:
sudo apt-get install mono-complete
我们缺少什么?
【问题讨论】:
标签: c# ubuntu msbuild mono roslyn