【问题标题】:Mono:Could not load file or assembly 'System.Threading.Tasks.Dataflow'单声道:无法加载文件或程序集“System.Threading.Tasks.Dataflow”
【发布时间】: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.2Roslyn 2.3.1Windows 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


    【解决方案1】:

    在此处查看解决方法:https://github.com/Microsoft/msbuild/issues/1469 您需要使用 Mono 托管的 MSBuild(例如,从 Mono 获取或在 Mono 下构建),从 NuGet 安装 System.Threading.Tasks.Dataflow 和 Microsoft.VisualStudio.RemoteControl 包。

    【讨论】:

      【解决方案2】:

      MSBuildWorkspace 当前不是跨平台的。它仅适用于 .net 桌面 clr。但是我对单声道的了解不是很好,所以有可能让它在单声道上工作。您的错误消息告诉我您需要以某种方式包含 DataFlow 库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 1970-01-01
        • 2020-08-17
        相关资源
        最近更新 更多