考虑到 SO 的这个问题,其中调用了整个 C# 内存编译器。当只需要词法和句法分析时:将文本解析为词位流,检查它们并退出。
在当前版本的System.CodeDom.Compiler中是否有可能,如果没有 - 会吗?
考虑到 SO 的这个问题,其中调用了整个 C# 内存编译器。当只需要词法和句法分析时:将文本解析为词位流,检查它们并退出。
在当前版本的System.CodeDom.Compiler中是否有可能,如果没有 - 会吗?
如果您可以使用 Mono,我相信它有一个您可以使用的 C# 解析器/词法分析器。
这是一个要查看的链接。至于 MS C# 团队计划做什么,有一些人谈到在某个时候将 C# 编译器变成“服务”——但目前尚不清楚这意味着什么或何时会发生。
虽然看起来代码是在内存中编译的 (CompilerParameters.GenerateInMemory),但实际情况并非如此。与 Visual Studio 中使用的编译器相同的编译器用于编译代码 (csc.exe)。它由 CreateProcess 启动(很像 Process.Start)并在进程外运行以将代码编译为磁盘上临时文件夹中的程序集。GenerateInMemory 选项调用 Assembly.LoadFrom() 来加载程序集。
您只需将 GenerateInMemory 设置为 false 并在完成后删除 OutputAssembly 即可获得相当于语法检查的功能。
虽然这听起来有点倒退,但它的巨大好处是这不会给您的进程带来任何内存压力。这会让你一直坚持到 C# 5.0 发布。