Using an AdHocWorkspace results in “The language &

2019-04-29 16:57发布

问题:

Using the RC2 of Microsoft.CodeAnalysis.CSharp.Workspaces in VS2015, this code throws an exception:

var tree = CSharpSyntaxTree.ParseText(...);
var workspace = new AdhocWorkspace();
var newRoot = Simplifier.Expand(tree.GetRoot(),
    compilation.GetSemanticModel(tree, false),
    workspace,
    n => true,
    true,
    CancellationToken.None);

The exception message is "The language 'C#' is not supported."

What am I missing to make this work?

回答1:

You need to add a reference to the C# Workspaces NuGet package.

This will copy the C# DLLs to your output, and let Roslyn's MEF scanner see the language services.