我們使用C#羅斯林2.3.1版編程.csproj的項目。單聲道:無法用於打開加載文件或程序集「System.Threading.Tasks.Dataflow」
爲此,我們使用的是由羅斯林通過每個Microsoft.CodeAnalysis.Document打開的.csproj和導航提供了以下標準的API代碼來獲取文件的語法樹:
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);
}
當我們在運行上面的代碼的Windows 7使用的.NET Framework 4.6.1/4.6.2和羅斯林2.3.1,代碼運行良好,我們得到的每個文件的所需語法樹。
但是,當我們嘗試在運行相同的代碼的Ubuntu 16.04,currentProject.Documents回報數,我們可以得到以下的拋出錯誤WorkSpaceFailed事件掛鉤:
Msbuild在處理文件時失敗 '/home/user/CSharp/RoslynSamples/AplModel/AplModel.csproj' 帶有消息: 無法加載字段類型 'Microsoft.Build.Ba ckEnd.Logging.LoggingService:_loggingQueue'(20) 由於:無法加載文件或程序集 'System.Threading.Tasks.DataStream,Version = 4.5.24.0,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'或其中一個依賴。 組件:System.Threading.Tasks.Dataflow,版本= 4.5.24.0, 文化=中性公鑰= b03f5f7f11d50a3a類型:成員:
我們已經使用安裝單Ubuntu的機器上:
sudo apt-get install mono-complete
我們缺少什麼?