Почему этот код вредит Visual Studio 2015?

По какой-то причине даже в том случае, если набрать это в С# файл в Visual Studio достаточно, чтобы заставить его мгновенно сбой. Зачем?

unsafe struct node {
    node*[] child;
}

Похоже, что когда IDE начнет раскрашивать ключевые слова и тому подобное.

Попытка этого в csc.exe exited with code 1 выплевывает csc.exe exited with code 1 который не очень помогает.

Хотя объявления массива в С# отличаются от C/C++, вышеизложенное выглядит так, как будто оно должно быть абсолютно корректным. Почему это не так, и почему он разбивает Visual Studio?

Моя версия Visual Studio - 14.0.23107.

Ответ 1

Это известная ошибка в Рослине. Эта ошибка затронет любую версию Visual Studio, которая использует Roslyn.

Если я правильно интерпретирую VersionOf.net, первая версия Visual Studio с встроенным Roslyn - это 2015 год. До этого я думаю, что она была доступна только как расширение. Таким образом, Visual Studio 2013 и ранее не должны быть затронуты.

Это должно быть исправлено в релизе релиза 16. В это время этот выпуск не запланирован.

Поскольку это ошибка в Roslyn, вы можете "обойти" ее, отредактировав и скомпилировав код, содержащий unsafe struct в старой версии Visual Studio, которая предшествовала Roslyn. Visual Studio 2012 должен работать. Затем вы можете использовать результирующий.DLL в своем текущем программном обеспечении.

Непроверенное исправление доступно, если вы построите Roslyn самостоятельно из этой ветки. Исправление было сделано в этой фиксации.