Visual studio 2015 Roslyn的突破性变化列表

Visual studio 2015 Roslyn的突破性变化列表,visual-studio-2015,roslyn,csc,Visual Studio 2015,Roslyn,Csc,切换到Visual Studio 2015后,我们注意到在Roslyn中对lambdas编译为MSIL的方式所做的一些更改(如和中所述)会在某些情况下导致运行时失败 由于Roslyn显然是.NET的未来,我们希望切换到这项技术,但似乎所有在生产环境中运行的遗留代码(我们对其正常运行有相当程度的信心)现在都很容易出现新的运行时故障。这些库也受到此问题的影响(如) 我们已经跳过了对RyuJIT的升级,但我相信Visual Studio 2015与Roslyn的集成度很高,我不认为我们可以简单地手动替

切换到Visual Studio 2015后,我们注意到在Roslyn中对lambdas编译为MSIL的方式所做的一些更改(如和中所述)会在某些情况下导致运行时失败

由于Roslyn显然是.NET的未来,我们希望切换到这项技术,但似乎所有在生产环境中运行的遗留代码(我们对其正常运行有相当程度的信心)现在都很容易出现新的运行时故障。这些库也受到此问题的影响(如)

我们已经跳过了对RyuJIT的升级,但我相信Visual Studio 2015与Roslyn的集成度很高,我不认为我们可以简单地手动替换
csc.exe
(但这很简单)

那么,是否有一份罗莎琳突破性变化的汇编清单,我们可以参考,看看我们能期待什么?

(更新)

感谢@NealGafter提供链接。当前可在此处找到中断更改列表:


似乎有些文档应该在这里:。根据描述:

编译器规范详细说明了Roslyn VB和C#编译器支持(和半支持)的表面积。这包括

  • 命令行开关及其含义
  • 中断以前版本编译器的更改
  • (故意)违反规范的编译器行为
  • 语言规范中未描述的编译器功能
    • COM特定功能和其他Microsoft特定功能
    • 影响编译器行为的“已知”属性
    • “规则集”文件语法和语义
  • 例如,为实现C#和VB之间的互操作性而提供的功能
    • 命名索引器使用C#
  • 编译器行为偏离语言规范的地方
  • 限制(例如标识符长度)
  • 每个版本的语言更改历史记录
  • 描述有关lambdas的CodeGen变更的文档(因为这是我的初始版本)位于:

    非提升Lambda表达式现在在单例显示类上实现为实例方法。由于委托的入口点是实例“Invoke”方法,因此在运行时,如果委托调用也是具有与“Invoke”完全相同的形式签名的实例方法,则将委托调用分派给底层实现方法的成本更低


    这可能会有所帮助:@nawfal:此页面似乎显示了Roslyn API的更改,我更感兴趣的是相对于以前VS版本中的
    csc.exe
    ,在生成的MSIL中所做的更改。我想,您目前在任何地方都找不到这些更改。你应该关注GitHub的问题,这与lambdas的变化有关。我们在roslyn回购协议@Neal中跟踪这个问题:我在中找到了包含一些信息的链接。不确定它是否是这方面的“规范”文档,但似乎很接近。我还考虑编译一个“todo迁移列表”,列出我的其他项目中可能出现的问题(比如围绕代码调用
    Delegate.CreateDelegate
    ,检查lambdas上的
    IsStatic
    Target
    属性等),但我不确定这个列表是否至少能涵盖大部分问题。不幸的是,这个列表中的突破性变化还不完整。看。@Neal:谢谢(延迟),我已经在上面添加了你的链接。