Nous utilisons C# Roslyn Version 2.3.1 pour l'ouverture .csproj projets par programme.Mono: Impossible de charger le fichier ou l'assembly 'System.Threading.Tasks.Dataflow'
A cet effet, nous utilisons le code API standard suivant fourni par Roslyn pour ouvrir le .csproj et naviguer à travers chaque Microsoft.CodeAnalysis.Document pour obtenir l'arbre de syntaxe du 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);
}
Lorsque nous courons le code ci-dessus sur Windows 7 en utilisant.NET Framework 4.6.1/4.6.2 et Roslyn 2.3.1, le code fonctionne bien et nous obtenons l'arbre de syntaxe requise de chaque document.
Mais quand nous essayons d'exécuter le même code sur Ubuntu 16.04, currentProject.Documents retours nombre et nous obtenons l'erreur suivante jeté dans la WorkSpaceFailed événement accroché:
Msbuild échoué lors du traitement du fichier '/home/user/CSharp/RoslynSamples/AplModel/AplModel.csproj' avec le message: Impossible de charger le type de champ 'Microsoft.Build.Ba ckEnd.Logging.LoggingService: _loggingQueue '(20) en raison de: Impossible de charger le fichier ou l'assemblage ' System.Threading.Tasks.Dataflow, Version = 4.5.24.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a 'ou l'un de ses dépendances. assemblage: System.Threading.Tasks.Dataflow, Version = 4.5.24.0, Culture = neutral, PublicKeyToken = type b03f5f7f11d50a3a: membre:
Nous avons installé mono sur la machine Ubuntu en utilisant:
sudo apt-get installation mono-complète
Qu'est-ce qui manque?