Pourquoi ce code plante-t-il Visual Studio 2015?

Pour une raison quelconque, même si taper cela dans un fichier C # dans Visual Studio est suffisant pour le faire planter instantanément. Pourquoi?

unsafe struct node { node*[] child; } 

Cela semble se produire lorsque l’EDI commence à colorier les mots-clés et autres.

L’essayer dans TIO crache csc.exe exited with code 1 ce qui n’est pas très utile.

Bien que les déclarations de tableaux en C # soient différentes de celles en C / C ++, ce qui précède semble être parfaitement valide. Pourquoi n’est-ce pas et pourquoi Visual Studio est-il bloqué?

Ma version de Visual Studio est 14.0.23107.

Ceci est un bug connu dans Roslyn . Ce bogue affectera toute version de Visual Studio utilisant Roslyn.

Si j’interprète correctement VersionOf.net , la première version de Visual Studio avec Roslyn intégré est 2015. Avant, je pense qu’elle était uniquement disponible en tant qu’extension. Ainsi, Visual Studio 2013 et ses versions antérieures ne devraient pas être affectés.

Il doit être corrigé dans la version 16 du jalon . À ce stade, cette version n’est pas planifiée.

Comme il s’agit d’un bogue dans Roslyn, vous pouvez le contourner en éditant et en compilant le code contenant la unsafe struct dans une version antérieure de Visual Studio, une version antérieure à Roslyn. Visual Studio 2012 devrait fonctionner. Vous pouvez ensuite utiliser le fichier .DLL résultant dans votre logiciel actuel.

Un correctif non vérifié est disponible si vous créez Roslyn vous-même à partir de cette twig . Le correctif a été apporté dans ce commit .