Roslyn 抛出不支持"VisualBasic"语言



我正在尝试开发一个可以同时分析C#和VisualBasic的解决方案,当然在这两种语言的代码中有适当的分支。

最初,我得到了两种语言的"不支持的语言"。最终,我找到了C#的答案,它解决了这种特定语言的问题。答案可以在上找到

Roslyn抛出语言';C#';不支持

分辨率非常简单,只需添加

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

到我的代码。显然,这让MSBuild意识到微软。代码分析。CSharp。工作空间是需要的,因此它加载它。

我试着为VisualBasic找到类似的东西,但什么也找不到。我试过,例如

var _v2 = typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation);

但这无济于事。

VisualBasic是否有类似C#的解决方案?

我发现,由于某种未知原因,VS 2019没有复制Microsoft。代码分析。VisualBasic。Workspaces.dll到bin\X86\Debug文件夹中。我手动复制了它,然后问题就解决了。生成的Solution对象包含有关VB解决方案中项目的信息。

问题仍然是为什么构建不复制这个dll,但至少我可以手动绕过它。

@DavidG对这个问题的评论让我走上了正轨。

我已经有了下面的前两个PackageReferences,并且得到了下面的InvalidOperationException异常。

无法打开项目'<项目路径>'因为不支持语言"Visual Basic"。

添加第三个PackageReference时,不再引发异常。

<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MsBuild" Version="3.6.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.6.0" />
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="3.6.0" />

请注意,我最初使用的是新PackageReference的最新版本,但有与Microsoft.CodeAnalysis.Common的冲突版本相关的NuGet错误。我使用了与现有包相同的版本来解决这个问题。

为Microsoft检测到NU1107版本冲突。代码分析。常见的安装/参考Microsoft。代码分析。常用4.2.0直接到项目来解决此问题->微软代码分析。VisualBasic。工作区4.2.0->微软代码分析。通用(=4.2.0(TypescriptRuntimeGenerator->微软代码分析。工作空间。MSBuild 3.6.0->微软代码分析。普通(=3.6.0(.

最新更新