首页 > 解决方案 > 如何仅获取从 Roslyn 提取的 C# 解析器(语法树)

问题描述

我正在尝试将 Roslyn 源代码引入 Unity 3D 视频游戏,该游戏将在其中进行实时 C# 编辑。我想要语法树来帮助调试、格式化和分析,并且最初计划为此目的推出我自己的解析器。但是,如果我可以提取 Roslyn 的语法树并在 Unity 中执行,那会让事情变得容易得多。

但是,我可能已经花费了 12 个小时来尝试减少 Roslyn 项目(请参阅此处的 escapades:https ://codavore.blogspot.com/2019/11/c-parser-part-2.html )而且我没有没有成功地减少项目。即删除 VB 部分会影响 C#/VB 的双重测试用例,而删除一个多余的东西会影响其他十几个。

有人对提取 C# 语法树的源代码有什么建议吗?

标签: c#roslyn

解决方案


我最初希望引入源代码,但根据@Jonathon Marolf 的评论,我试图通过 nuget 引入它。但是,无论何时我更改文件,Unity 都会覆盖 nuget 所做的大部分工作,因此这不起作用。为了解决这个问题,我找到并安装了NuGet for Unity。然后运行 ​​nuget“Install-Package Microsoft.CodeAnalysis.CSharp -Version 3.3.1”。

当然这破坏了项目,因为它是为 VS 项目设计的,而不是 Unity。我不得不删除重复的 DLL,以及所有的语言支持文件。它仍然有几个在尝试运行时卸载的分析 dll 的错误,但它能够解析出我传递给它的部分源代码。


推荐阅读