web-dev-qa-db-ja.com

このコードがVisual Studio 2015をクラッシュさせるのはなぜですか?

何らかの理由で、これを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です。

61
Orion

これは Roslynの既知のバグ です。このバグは、Roslynを使用するVisual Studioのすべてのバージョンに影響します。

VersionOf.net を正しく解釈している場合、Roslynが組み込まれたVisual Studioの最初のバージョンは2015です。それ以前は、Ithinkそれは拡張機能としてのみ利用可能でした。そのため、Visual Studio 2013以前は影響を受けません。

マイルストーン16リリース で修正される予定です。現時点では、そのリリースは予定されていません。

これはRoslynのバグであるため、Roslynより前のVisual Studioの古いバージョンでunsafe structを含むコードを編集およびコンパイルすることで、「回避」できます。 Visual Studio 2012が動作するはずです。その後、結果の.DLLを現在のソフトウェアで使用できます。

this branch から自分でRoslynをビルドすると、未検証の修正が利用可能になります。修正は this commit で行われました。

51
Amy