为什么此代码会使Visual Studio 2015崩溃?

时间:2018-08-07 17:48:43

标签: c# visual-studio visual-studio-2015 roslyn

由于某种原因,即使将其键入到Visual Studio中的C#文件中,也足以使其立即崩溃。为什么?

unsafe struct node {
    node*[] child;
}

IDE似乎开始为关键字等着色时会发生这种情况。

在TIO中尝试它会弹出csc.exe exited with code 1,这不是很有帮助。

虽然C#中的数组声明与C / C ++中的数组声明不同,但是上述似乎应该是完全有效的。为什么不是,为什么它会使Visual Studio崩溃?

我的Visual Studio版本是14.0.23107。

1 个答案:

答案 0 :(得分:49)

这是known bug in Roslyn。此错误将影响使用Roslyn的任何Visual Studio版本。

如果我正确地解释了VersionOf.net,则内置Roslyn的Visual Studio的第一个版本是2015。在此之前,我认为只能作为扩展使用。因此,Visual Studio 2013及更早版本不受影响。

该问题将在milestone 16 release中修复。目前,该版本尚未安排。

由于这是Roslyn中的错误,因此您可以通过在Visual Studio的较早版本(早于Roslyn的版本)中编辑和编译包含unsafe struct的代码来“解决”它。 Visual Studio 2012应该可以工作。然后,您可以在当前软件中使用生成的.DLL。

如果您从this branch构建Roslyn,则可以使用未经验证的修复程序。该修复程序是在this commit中进行的。