web-dev-qa-db-fra.com

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

Pour une raison quelconque, le simple fait de saisir ce texte dans un fichier C # dans Visual Studio suffit à le faire planter instantanément. Pourquoi?

unsafe struct node {
    node*[] child;
}

Cela semble se produire lorsque IDE commence à colorier les mots clés, etc.

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++, les semble comme il devrait être parfaitement valide. Pourquoi n'est-ce pas et pourquoi est-ce qu'il bloque Visual Studio?

Ma version de Visual Studio est 14.0.23107.

61
Orion

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

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

Cela doit être corrigé dans le version intermédiaire 16 . Pour le moment, 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 le unsafe struct dans une version antérieure de Visual Studio, 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 construisez vous-même Roslyn à partir de cette branche . Le correctif a été fait dans this commit .

51
Amy