【发布时间】:2015-11-27 09:58:13
【问题描述】:
切换到 Visual Studio 2015 后,我们注意到 Roslyn 中对如何将 lambda 编译为 MSIL 的一些更改(在 this thread 和 on GitHub 中进行了描述)在某些情况下会导致运行时失败。
由于 Roslyn 显然是 .NET 的未来,我们希望切换到这项技术,但似乎所有已经在生产环境中运行的遗留代码(并且我们有相当程度的信心它可以正常工作)都是现在容易出现新的运行时故障。这些也是受此问题影响的几个库(例如Moq, for example)。
我们已经为 its issues 跳过升级到 RyuJIT,但我相信 Visual Studio 2015 与 Roslyn 高度集成,我认为我们不能简单地手动替换 csc.exe(但那是 a different question)。
那么,Roslyn 中是否有一个重大变化的编译列表,我们可以参考这些列表来看看我们可以期待什么?
【问题讨论】:
-
@nawfal:这个页面似乎显示了 Roslyn API 的变化,我对生成的 MSIL 相对于以前的 VS 版本中的
csc.exe的变化更感兴趣。 -
我认为,您目前在任何地方都找不到这些更改。你应该关注this GitHub issue,它与 lambdas 的变化有关。
-
我们正在 github.com/dotnet/roslyn/issues/7278 的 roslyn 存储库中跟踪这个问题
-
@Neal:我在the answer below 中找到了包含一些信息的链接。不确定这是否是“规范”文档,但似乎接近它。我还考虑编译一个“待办事项迁移列表”,以在我的其他项目中查找可能会中断的内容(例如围绕代码调用
Delegate.CreateDelegate,检查 lambdas 上的IsStatic或Target属性等),但我不确定这个列表是否至少可以涵盖大部分问题。
标签: visual-studio-2015 roslyn csc