看到我们可能会在下一个版本中获得这个功能,您认为自己能做什么或者想要使用此功能做些什么?
就个人而言,在代码生成期间(例如在MSBuild任务中),我有时希望能够在项目中查看代码,从而可以选择生成更好的代码(更多代码).
例如,如果我有一个具有部分方法的部分类,其中某个类型的参数被发送,那么在代码生成时我可以使用该信息生成更好的代码.
换句话说,我在编写代码时发布了我的"意图",我可以将代码生成器用于繁重的工作.
partial void InitCommandForStoredProc(ref DbCommand command, string storedProcName);
Run Code Online (Sandbox Code Playgroud)
在部分方法中给出此信息,我可以生成正确的代码.
那么你们都希望能够将Compiler作为一项服务做什么呢?
回到2008年的PDC,在Anders Hejlsberg的C#期货谈话中,他谈到了重写C#编译器并提供"编译器即服务",当然我在他们针对C#4.0时间框架时给人的印象. ...
那么,有谁知道这是什么状态?它似乎没有在CTP中存在,除了链接到2008 PDC会话视频(大约一个小时)之外,几乎没有关于WEB的信息.
这个倡议变暗了吗?
什么是关于Roslyn项目的CaaS(编译器即服务)?
使用Roslyn功能如何通过当前的C#4.0编译器提高C#应用程序的性能?
Roslyn-CTP中的已知限制/问题是什么?
比如我有
class Foo: INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
public int Bar {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我可以在编译时获取Foo类AST并重写Bar
public string Bar
{
get { return this.bar; }
set
{
if (value != this.bar)
{
this.phoneNumberValue = value;
PropertyChanged(this, new PropertyChangedEventArgs("Bar"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
.
在Anders Hejlsberg的.NET 4.0演示文稿中,他在.NET 5.0("或未来版本")中讨论过,他们正在研究"编译器即服务"模型.
Anders Hejlsberg的状态:[source] [1]"我们想要打开我们的编译器,使它成为一个API,你可以调用它来编译一段代码并获取表达式树和/或IL.这可以实现一系列场景,例如应用程序可编程性,交互式提示,用户编写的重构,以及嵌入C#的小岛的特定领域语言."
我正在努力寻找一个真正有用的实际例子.我错过了这里的主要概念吗?或者这真的会对语言有益吗?
[1]:http://www.simple-talk.com/opinion/geek-of-the-week/anders-hejlsberg-geek-of-the-week/编译器即服务
看起来这两种语言都被称为"C#应该是什么",使用hygenic宏,REPL,Compiler作为Serivce(CaaS),静态+鸭子打字(C#之前的方式).这两种语言之间是否有任何重大差异,或者它们只是两种不同的实现,或多或少相同的东西?我在某地读过Nemerle的宏观服务比Boo更强大; 这是真的?
他们如何在当前活动,成熟度和IDE集成方面进行比较?
此外,C#5.0传闻的CaaS功能是否可能会使它们过时,如果它实现,或者是否有能够使它们保持相关的功能?
考虑到SO的这个问题,调用整个C#内存编译器.当只需要词法和句法分析时:将文本解析为词汇流,检查它们并退出.
是否有可能在当前版本的System.CodeDom.Compiler中,如果没有 - 它会是吗?
据我所知,微软的Compiler as a Service或Roslyn项目的灵感来自Mono Cecil.
但是Mono Cecil和NRefactory之间的关系是什么?一个人用另一个吗?或者他们是做同样事情的替代技术?
看起来它们都提供了相同的代码分析服务,就像Roslyn一样.