VS 2015 Razor Autocomplete / Intellisense cache immédiatement après la liste déroulante

Dans VS 2015, seulement dans les fichiers Razor (.cshtml), environ la moitié du temps, la saisie semi-automatique / la liste de suggestions / intellisense ne fonctionne pas correctement (désolé, pas sûr du terme réel lorsque vous tapez un object et que vous le tapez) . et la liste des propriétés et des méthodes montre à sélectionner)

Le comportement est celui quand je frappe . , la liste apparaît pendant une fraction de seconde et se ferme ensuite. Cela arrive si vite que j’essaie de faire un Backspace rapide . , Backspace faire un cycle plusieurs fois pour au moins voir le nom dont j’ai besoin, mais je ne peux généralement pas le comprendre et finir par trouver le nom exact ailleurs dans le code. Extrêmement irritant …

Cela se produit sporadiquement sans motif réel, je peux trouver. Voici les modèles que j’ai exclus:

  • Le fichier ouvert ne semble pas avoir d’importance.
  • Que je ferme ou ferme le fichier ne semble pas avoir d’importance
  • Que je navigue vers un autre fichier et que le retour ne semble pas avoir d’importance
  • Cela fonctionnera / ne fonctionnera pas plusieurs fois sur le même fichier
  • Il ne semble pas être pertinent pour un object / une propriété / une méthode particulière

J’ai vérifié toutes mes options (il ne semble pas y avoir d’options d’édition de texte pour Razor?), J’ai essayé d’effacer les caches, de recharger la solution / les projets, de redémarrer VS, qui semblent toujours ne pas fournir de motif.

Quelqu’un a-t-il rencontré cela et a-t-il des idées sur ce que je pourrais chercher d’autre pour résoudre ce problème?

Exemple Voici un exemple extrêmement simple: nouveau projet, très peu de code / fichiers, vue très simple. Où le Model. s’arrête, je devrais avoir les méthodes de base habituelles et une collection “Items”. Il apparaît pendant une fraction de seconde puis disparaît … pas d’parsing syntaxique de la vue lambda / complexe (elle est également reproductible):

entrer la description de l'image ici

Mise à jour: Patterns

Les choses que j’ai remarquées:

  • Si je @model ns.ns.ns.type un @model ns.ns.ns.type , cela se produit rarement vers la fin de la base des espaces de noms. C’est au fur et à mesure que j’avance vers le type que cela se passe. Celui-ci est intermittent.
  • Dans certains cas, cela fonctionne parfaitement bien, à chaque fois. Par exemple, j’utilise souvent les outils DevExpress et je n’ai jamais vu le comportement de l’une de leurs extensions (donc, @Html.DevExpress(). (Et d’autres modèles similaires, pas nécessairement DevEx) ne causeront jamais de problème)
  • Cela arrive presque tout le temps quand @Model mon @Model (c’est là où je le veux le plus!). J’ai trouvé des cas où cela est reproductible à chaque fois (voir l’exemple ci-dessus), mais c’est environ 90% +
  • De temps en temps, lorsque je travaille dans l’arborescence d’objects, il y en a une qui échoue pendant que le prochain fonctionne (par exemple: @models ProjName.Web.App.Subscriptions.Models.AccountCreateVM … il peut échouer sur les Subscriptions mais fonctionne @models ProjName.Web.App.Subscriptions.Models.AccountCreateVM sur les Models )
  • De temps en temps, le fait de commencer à taper le nom dans la saisie semi-automatique le remet en marche et recommence à fonctionner. Dans l’exemple ci-dessus, le fait de commencer à taper Acc pour AccountCreateVM provoque son redémarrage.

Cela se produit pour moi tout au long de VS2015 pendant les déclarations lambda.

Cela se produit lors de l’édition du code “mid-document”, comme dans, s’il y a autre chose que a) ou} suivant où je tape. VS semble avoir du mal à dire où la déclaration en cours se termine et la prochaine déclaration commence.

Le code suivant échouera systématiquement à déclencher Intellisense à la période, même lorsqu’il est explicitement appelé.

 var subset = initialSet.Where(x => x. var result = new Whatever(); 

Dans Razor, il est très courant d’éditer du code entre du texte existant et d’utiliser des instructions lambda:

 @Html.DisplayFor(m => m. 

C’est probablement la raison pour laquelle vous ne faites l’expérience que dans Razor.

La façon dont je travaille autour de ce bogue consiste simplement à écrire le) pour fermer la méthode.

 var subset = initialSet.Where(x => x.) var result = new Whatever(); @Html.DisplayFor(m => m.) 

Intellisense peut alors être déclenché sur la période.

Si vous utilisez une méthode qui nécessite au moins plus que le lambda (comme RadioButtonFor), vous devrez également mettre une virgule pour chacun des parameters supplémentaires.

 @Html.RadioButtonFor(m => m.,) 

Si Intellisense apparaît, mais disparaît immédiatement, la meilleure solution que j’ai trouvée jusqu’à présent est de taper quelques lettres d’un membre connu, puis d’utiliser Ctrl-Gauche pour revenir à la période et déclencher à nouveau Intellisense (Ctrl- Space ou backspace-retype). Cela le fait généralement apparaître et restr. Vous devrez supprimer les caractères que vous avez tapés par la suite, ce qui peut être frustrant.

Je n’ai pas trouvé la cause première, mais dans tous les cas, CTRL+SPACE fonctionne. Ce n’est pas le meilleur, mais des années-lumière mieux que rien du tout.

(ce raccourci n’est pas celui que j’ai utilisé par le passé, c’est donc probablement un comportement standard, mais …) Si vous êtes au Model. points Model. et la liste de saisie semi-automatique disparaît, CTRL + SPACE le remet constamment en place, et quand il revient, il rest! S’il n’y a qu’un seul membre à compléter automatiquement, il remplira automatiquement le membre sur CTRL + ESPACE

Assurez-vous simplement que le ) ne touche pas le texte que vous modifiez et que la fenêtre contextuelle rest affichée.

Au lieu de…

@Html.Partial("ManageGrid", Model.)

Utilisation…

@Html.Partial("ManageGrid", Model. )

L’intellisense semble se confondre en touchant une parenthèse proche. Pas idéal, mais c’était le seul moyen de le faire fonctionner pour moi de manière constante.

J’ai eu la même erreur et j’ai corrigé en supprimant tous les fichiers du cache du modèle de composant.

C’est le chemin:

Utilisateurs \ YourName \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ComponentModelCache

J’espère que cela pourra aider

Dans mon cas spécifique, j’ai pu résoudre le problème en installant la dernière version de Microsoft ASP.NET et des outils Web.

https://marketplace.visualstudio.com/items?itemName=JacquesEloff.MicrosoftASPNETetWebTools-9689

Une fois que je l’ai installé, le problème était parti. Il est probable que cette mise à jour a corrigé quelque chose qui pourrait être corrigé avec une version antérieure, mais de toute façon je suis content.

(J’ai trouvé ceci dans Visual Studio sous Outils-> Extensions et mises à jour …-> Mises à jour-> Visual Studio Gallery)

J’utilise ctrl + j comme solution temporaire lorsque je connais le contenu.

Ou continuer à écrire sans parenthèse droite peut utiliser l’achèvement:

@ Html.LabelFor (m => m.Name

Chaque fois que cela m’arrive, je mets juste un point supplémentaire et ça marche. Je dois mettre le point supplémentaire à chaque fois. Par exemple, si j’écris ceci et intellisence clignote et disparaît:

 @Html.TextBoxFor(m => m. 

alors je fais juste ça:

 @Html.TextBoxFor(m => m.. 

Et intellisense va maintenant montrer après le premier point. J’ai pris cette habitude jusqu’à ce que MS ait une solution.

Au lieu de…

 @Html.Partial("ManageGrid", Model.) 

Utilisation…

 @Html.Partial("ManageGrid", Model.