您将如何使用编译器即服务进行操作

Shi*_*mar 27 c# compiler-construction compiler-as-a-service roslyn

看到我们可能会在下一个版本中获得这个功能,您认为自己能做什么或者想要使用此功能做些什么?

就个人而言,在代码生成期间(例如在MSBuild任务中),我有时希望能够在项目中查看代码,从而可以选择生成更好的代码(更多代码).

例如,如果我有一个具有部分方法的部分类,其中某个类型的参数被发送,那么在代码生成时我可以使用该信息生成更好的代码.

换句话说,我在编写代码时发布了我的"意图",我可以将代码生成器用于繁重的工作.

partial void InitCommandForStoredProc(ref DbCommand command, string storedProcName);
Run Code Online (Sandbox Code Playgroud)

在部分方法中给出此信息,我可以生成正确的代码.

那么你们都希望能够将Compiler作为一项服务做什么呢?

Joe*_*ari 58

为了给出(一)实际答案,LINQPad的IntelliSense将从CaaS中获益匪浅.它将允许自动完成与C#和VB一起使用(假设CaaS也适用于VB).它还可以轻松编写很酷的新重构工具.

给我们CaaS,我会让LINQPad成为你可以用它做的一个展示:)

这个功能太好了,不能等到C#6/VB 12

  • 所有赞成将VB AutoComplete引入LINQPad的任何东西! (15认同)

Eri*_*ert 19

看到我们可能会在下一个版本中获得此功能

我们尚未宣布为与"编译器即服务"策略相关的任何功能或产品安排或运送车辆.对于我们希望将来构建编译器架构的方式,CaaS是一个长期的前瞻性战略.它不是语言功能,而是构建工具的策略.在最近的PDC安德斯做了一些可以用这些工具做的事情的演示,但他特别没有说什么时候这样的东西会出货.你应该不会很快就指望它的任何时间.我们在下一个版本中宣布的唯一功能是C#5的异步等待功能,我们还没有公布这个时间表.

您认为自己能做什么或者想要使用此功能做些什么?

虽然我个人对这个问题的答案非常感兴趣,但我注意到它不适合StackOverflow问题.这是模糊的,推测性的和主观的,而不是关于特定的技术编码问题.

谢谢你提供你的场景; 它们对我很有用.

更新:2011年10月

我们刚刚发布了"Compiler As A Service"项目的预览版,即"Roslyn".

我们仍然没有宣布一艘船舶; 它将发布在Visual Studio 11上.


Mat*_*son 7

我认为这将使面向方面框架的编织过程更加强大.现在,他们几乎都使用了一些hacky技术,这些技术对您的实现提出了要求,例如继承自ContextBoundObject,或者将所有方法都设置为虚拟.拥有CaaS会使AOP框架成为.NET中的一流公民,我认为这将是一个巨大的好处.