任何人都可以指导我在ASP.Net,C#项目中使用ANTLR dll的目的。
我刚注意到某些项目中引用了 antlr.runtime , Antlr3.Runtime , Antlr3.Utlility 程序集。
如果可以举出一些真实世界的例子,或者任何网页链接都会有用,那就太棒了。
答案 0 :(得分:45)
WebGrease包使用Antlr包。 WebGrease包由ASP.NET Web Optimization包使用。
如果要删除Antlr,请删除ASP.NET Web Optimization包。它将依次删除其他2个包。
如果您正确设计了应用程序,它不会对性能产生太大影响。
答案 1 :(得分:7)
ANTLR是一个解析器生成器,能够生成多种语言的解析器,包括C#。 ANTLR主页为here。
创作者Terence Parr还出版了一本书The Definitive ANTLR Reference。
答案 2 :(得分:3)
如果您在运行时使用antlr语法解析任何文本,则需要这些dll。
通常有两个步骤。
1)在你的.g文件上运行java antlr解析器,生成一个C#lexer,C#语法和可能的C#tree walker。
2)将这些文件构建到您的应用程序中。如果您使用的是ANTLR版本3,这些文件将与antlr.runtime dll或antlr3.runtime dll一起使用。
您的C#程序现在可以使用您在步骤1中编译的语法来解析文本文件。
答案 3 :(得分:0)
ASP.NET Web Optimization package依赖于WebGrease,而后者又依赖于Antlr。如果要删除Antlr,则必须删除ASP.NET Web Optimization。所以现在的问题变成了:
新的MVC项目中的ASP.NET Web Optimization package是什么?
它用于捆绑和缩小.css
和.js
资源。在新的ASP.NET MVC Web项目中,有一个名为/App_Start/BundleConfig.cs
的文件,其中定义了捆绑包。例如:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.css", "~/Content/site.css"));
// etc.
然后在/Views/Shared/_Layout.cshtml
中将这些已定义的包添加到返回的视图中。
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/jquery")
因此,如果删除这些引用,则必须使用其他策略/工具来捆绑/最小化gulp-concat和gulp-uglify这样的依赖项。