C#6.0的升级路径在哪里?安全吗?

Rob*_*ist 7 .net c# msbuild roslyn

我维护了大量项目,目前都是用.Net 4.5/c#5编写的.我有兴趣升级到C#6.0,但找不到任何关于安全性的文档.

从我读到的,升级到VS 2015/C#6/.Net 4.6意味着使用Roslyn/RyuJit构建我们的代码.(或者使用msbuild 14,它使用Roslyn).

然而,Roslyn目前存在大量未解决的问题:https://github.com/dotnet/roslyn/issues/7278 其中许多都保证会影响我们的代码库.

同样,RyuJit似乎完全不稳定,就像最近6个月前一样(http://nickcraver.com/blog/2015/07/27/why-you-should-wait-on-dotnet-46/)

我无法在任何地方找到安全升级到C#6.0/.Net 4.6的任何文档,但却发现这些东西已经发布到RTM和VS 2015并且公开发布了如此多的错误,这一点非常奇怪.

救命?

Jas*_*ski 11

其中许多都保证会影响我们的代码库.

我不太确定.我们不仅要构建Roslyn本身,还要构建Visual Studio的其余部分,整个.NET Framework,Windows,ASP.NET以及Roslyn,并且已经这样做了两年了.我们做了测试传递,我们从GitHub下载了数千个项目,因此我们可以验证使用旧编译器构建的代码是否可以使用新编译器构建.我们非常非常认真地兼容旧编译器.

有这么多的漏洞在公开场合.

关于错误计数有几点需要了解:

  1. 这不仅包括编译器,还包括IDE,重构,调试器和许多其他组件.
  2. 该计数包括尚未发布的功能的错误.例如,几天前我们开始测试一个新的编译器功能,我们希望在C#7中发布,并在各种IDE功能上提交30-40个错误,需要更新以了解它.
  3. 我们为不影响您的事情提交错误.例如,每当我们的自动化测试出现问题时,我们都会提交错误信息.任何时候有人意识到"嗯,我们可以清理它",我们提交了一个错误.我们甚至使用"问题"来讨论未来的语言提案作为论坛,而不是错误本身.现在我有一个问题要写我需要写的博客文章.
  4. 其中一些实际上并不是错误的错误; 它们包括诸如"我希望编译器提供更好的错误消息"之类的问题.
  5. 其中许多涉及在Linux或Mac上运行Roslyn,它仍在积极开发中.

如果我们过滤到"编译器"错误的实际列表并过滤掉未发布的功能的编译器错误,则计数要小得多.

最重要的一点:

  1. 在编译器的每个版本中都存在bug.编译器是由人类编写的软件,因此根据定义它并不完美.我们只是选择在GitHub上播放脏衣服,而不是将它隐藏在我们的防火墙后面!

这当然不是说你不会遇到错误,但我们已经尽力使Roslyn成为最好的编译器,我们可以提供最好的兼容性.如果我们必须编写一份文档,说"这里是你的代码不兼容的所有方式",那就意味着我们失败了.像往常一样,在部署之前总是测试一些东西,但这与其他任何东西都没有什么不同.