罗斯琳抛出语言' C#'不受支持

时间:2016-07-05 13:18:27

标签: c# roslyn

我创建了一个类库项目并进行了一些处理,并使用Roslyn生成代码。

我在WPF GUI应用程序中使用该库作为参考。

这些是NuGet包:

enter image description here

Build显示没有错误,但是当我使用以下代码时:

private static void GetGenerator()
{
  workspace = new AdhocWorkspace();
  generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);
}

我得到一个例外:

  

"语言' C#'不受支持。"

   at: Microsoft.CodeAnalysis.Host.HostWorkspaceServices.GetLanguageServices(String languageName)
   at: Microsoft.CodeAnalysis.Host.Mef.MefWorkspaceServices.GetLanguageServices(String languageName)
   at: Microsoft.CodeAnalysis.Editing.SyntaxGenerator.GetGenerator(Workspace workspace, String language)

根据thisthis,我必须在本地复制CodeAnalysis文件并添加必要的引用。他们在那里,但错误发生了。

这仍然是去年未修复的错误吗?

我还应该做些什么?

2 个答案:

答案 0 :(得分:17)

很可能是因为您没有在代码中引用Microsoft.CodeAnalysis.CSharp.Workspaces,即您从未在此dll中使用类型或方法,因此MSBuild认为不需要它(请参阅例如this问题)。

所以你可以做的就是例如在类库项目中的某处添加以下行:

var _ = typeof(Microsoft.CodeAnalysis.CSharp.Formatting.CSharpFormattingOptions);

然后MSBuild应该复制Microsoft.CodeAnalysis.CSharp.Workspaces.dll,一切都应该没问题。无需从所有其他项目中引用NuGet包。

答案 1 :(得分:13)

您还必须将 Microsoft.CodeAnalysis 包添加到类库项目引用项目中。

相关问题