关于使用Roslyn添加C#语法糖的两部分问题:
首先,是否可以使用Roslyn向C#添加新语法,或者它总是必须是从有效C#到其他有效C#的转换?例如,我想做一些像VB.NET的XML文字:
XElement lvalue =;
是否可以在编译时将其转换为:
XElement lvalue = new XElement("some", new XElement("xml")); // or whatever
其次,如果可能的话,对用户来说是什么样的?我可以这样做,以便编写第一个表达式,并且永远不会看到转换到第二个表达式(它在编译时透明地发生)?或者,Roslyn语法转换必须作为一种IDE"重构建议"出现?我对Roslyn的文档不清楚.
首先,是否可以使用Roslyn向C#添加新语法
不.
或者它总是必须是从有效的C#到其他有效的C#的转换?
是的.
Roslyn是一个C#/ VB分析引擎; 这些是它分析的唯一语言.它不是用于扩展C#或VB语言.
C#编译器是在相当宽松的许可下开源的.如果你想编写自己的版本,你当然可以分叉存储库并使解析器做你喜欢的任何事情.