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

时间:2016-03-01 17:19:20

标签: c# .net 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并且公开发布了如此多的错误,这一点非常奇怪。 / p>

帮助?

1 个答案:

答案 0 :(得分:11)

  

其中许多都会影响我们的代码库。

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

  

公开场面有很多错误。

关于错误计数的一些事情需要了解:

  1. 这不仅包括编译器,还包括IDE,重构,调试器和许多其他组件。
  2. 此计数包含尚未发货的功能的错误。例如,几天前我们开始测试一个新的编译器功能,我们希望在C#7中发布,并在各种IDE功能上提交30-40个错误,需要更新以了解它。
  3. 我们会为不会影响您的事件提交错误消息。例如,每当我们的自动化测试出现问题时,我们都会提交错误信息。每当有人意识到这一点时,我们就可以清理它了#34;我们提交了一个错误。我们甚至使用"问题"讨论未来的语言提议作为一个论坛,而不是一个bug本身。现在我遇到了一个问题,即write a blog post that needs to be written.
  4. 其中一些实际上并不是错误的错误;它们包含"I wish the compiler gave better error messages."
  5. 等问题
  6. 其中许多涉及在Linux或Mac上运行Roslyn,目前仍在积极开发中。
  7. 如果我们过滤到"编译器"的实际列表错误并过滤掉尚未发布的功能的编译器错误the count is much much smaller

    最重要的一点:

    1. 在编译器的每个版本中总有错误。编译器是由人类编写的软件,因此根据定义它并不完美。我们只是选择在GitHub上播放脏衣服,而不是把它藏在我们的防火墙后面!
    2. 这当然不是说你赢了找到了一个错误,但是我们已经尽力使Roslyn成为最好的编译器,我们可以最好的兼容性我们可以如果我们来编写一份文件,说明这里的所有代码都不兼容"那就意味着我们失败了。像往常一样,在部署之前总是要测试一些东西,但这与其他任何东西没什么不同。