首页 > 解决方案 > Visual Studio 2019 中的 ANTLR4 运行时问题

问题描述

我正在尝试让 antlr 在 VS 中工作。好久没接触VS了。我已经根据 Antlr 在线文档添加了 AntlrVSIX 扩展,这为我创建了一个示例计算器项目,但我无法编译它(我卸载并重新安装了 AntlrVSIX,但它对以下问题没有任何影响)。

VS 抱怨“找不到类型或命名空间名称‘Antlr4’(您是否缺少 using 指令或程序集引用?)”并指向“using Antlr4.Runtime.Misc;”行 (还有很多类似的)。

如果我查看菜单 Tools:NuGet Package Manager:Manage NuGetPackages for Solution... 它清楚地显示 Antlr4.Runtime.Standard 存在并已安装(显示版本 4.8.0)。

我想我必须在我的项目中添加对这个 dll 的引用,所以我在解决方案资源管理器中右键单击 References:Add Reference... 但我在任何列表中都找不到它,但是我搜索。

有一个浏览按钮,我假设我可以使用它直接链接到 DLL,所以我搜索了磁盘,找到了 dll 并链接到它。这现在起作用了,所有这些错误都消失了,但这不可能是正确的方法。

那么如何使用 References:Add Reference... 正确添加对它的引用?VS 知道它在那里,它会显示它,但不会让它被那样引用,因为它不会在 VS 中通过 References:Add Reference 显示它...

标签: c#visual-studio-2019antlr4

解决方案


关于您的具体问题,是的,您不想添加对 dll 的引用。相反,您需要在 csproj 中为这些依赖项添加一个“<PackageReference>”。所有这些都存在于 Nuget.org。所以,在 VS2019 中,在解决方案管理器中右键单击一个项目,然后查找“管理 Nuget 包”以添加 Antlr4BuildTasks 和 Antlr4.Runtime.Standard。

请注意,我一直在更新 Antlrvsix 扩展,但已经有 2 个月没有发布了,比我平时的时间表要长,因为下一个版本有大量的更改。我将在一周内削减第 8 版。VS2019 中的模板已被删除,因为它已经过时。它使用了一个古老版本的 Antlr4BuildTasks。相反,使用 Antlr4BuildTasks.Templates v8.1 从头开始​​创建 C# 项目。请按照此处的说明进行操作. 您无需下载 Antlr 工具包、Java 或设置任何环境变量。你甚至不需要使用 VS2019。您只需要 Net Core 3.1 并安装 Antlr4BuildTasks.Templates。然后,在命令行 shell 中键入“mkdir foo; cd foo; dotnet new antlr; dotnet restore; dotnet build; dotnet run”以使用 Antlr4 创建 C# 应用程序。创建应用程序后,您可以根据需要对其进行修改。如果您从还没有 Antlr 的 Net Standard 或 Net Core 项目开始,您将需要添加 Antlr4.Runtime.Standard 4.8 和 Antlr4BuildTasks 8.1 的项目参考,添加所有语法和驱动程序以设置和调用解析器——比较难做,但是可以通过VS来完成,或者你可以更容易更快地编辑CSPROJ文件。Antlr4BuildTasks 查看您的 CSPROJ 文件,将看到引用了 Antlr4.Runtime.Standard 4.8,然后将使用正确版本的 Antlr JAR 文件来生成解析器和词法分析器。有任何问题,请告诉我。


推荐阅读