Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mono:无法加载文件或程序集';System.Threading.Tasks.Dataflow';_C#_Ubuntu_Msbuild_Mono_Roslyn - Fatal编程技术网

C# Mono:无法加载文件或程序集';System.Threading.Tasks.Dataflow';

C# Mono:无法加载文件或程序集';System.Threading.Tasks.Dataflow';,c#,ubuntu,msbuild,mono,roslyn,C#,Ubuntu,Msbuild,Mono,Roslyn,我们正在使用C#Roslyn版本2.3.1以编程方式打开.csproj项目 为此,我们使用Roslyn提供的以下标准API代码打开.csproj并浏览每个Microsoft.CodeAnalysis.Document以获取文档的语法树: public void BrowsProjectDocuments(string projectPath) { var workspace = MSBuildWorkspace.Create(); workspace.WorkspaceFailed

我们正在使用C#Roslyn版本2.3.1以编程方式打开.csproj项目

为此,我们使用Roslyn提供的以下标准API代码打开.csproj并浏览每个Microsoft.CodeAnalysis.Document以获取文档的语法树:

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);
}
public void BrowsProjectDocuments(字符串projectPath)
{
var workspace=MSBuildWorkspace.Create();
workspace.workspacefiled+=workspacefiled;
Project currentProject=workspace.OpenProjectAsync(projectPath).Result;
foreach(currentProject.Documents中的文档)
{
任务documentSyntaxTree=document.GetSyntaxTreeAsync();
.....
.....
} 
}
私有静态void工作空间失败(对象发送方,工作空间诊断文塔)
{
控制台写入线(如诊断信息);
}
当我们使用.NET Framework 4.6.1/4.6.2Roslyn 2.3.1Windows 7上运行上述代码时,代码运行良好,我们得到了每个文档所需的语法树

但是当我们尝试在Ubuntu 16.04上运行相同的代码时,currentProject.Documents返回0计数,我们在连接的工作空间失败事件中抛出以下错误:

处理文件时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, 区域性=中性,PublicKeyToken=b03f5f7f11d50a3a类型:成员:

我们在Ubuntu机器上安装了mono,使用:

sudo-apt-get-install-mono-complete


缺少什么?

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

请在此处查找解决方法: 您需要使用Mono托管的MSBuild(例如,取自Mono或在Mono下构建),从NuGet安装System.Threading.Tasks.Dataflow和Microsoft.VisualStudio.RemoteControl软件包