web-dev-qa-db-fra.com

Le menu déroulant VS 2015 Razor Autocomplete/Intellisense se cache immédiatement après le menu déroulant.

Dans VS 2015, ce n’est que lorsque les fichiers Razor (.cshtml) sont utilisés environ la moitié du temps que la liste de complétion automatique/liste de suggestions/intellisense ne fonctionne pas correctement (désolé, je ne suis pas sûr du terme réel ... lorsque vous tapez un objet et cliquez sur . et la liste des propriétés et méthodes montre à sélectionner)

Le comportement est que, lorsque je clique sur ., la liste s’affiche pendant une fraction de seconde, puis se ferme. C’est si rapide que j’essaie de faire un cycle rapide Backspace, ., Backspace, . quelques fois au moins voir le nom dont j’ai besoin, mais je ne peux généralement pas l’obtenir et finis par devoir nom exact ailleurs du code. Extrêmement irritant ...

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

  • Le fichier ouvert ne semble pas avoir d'importance.
  • Que je ferme ou rouvre le fichier ne semble pas avoir d'importance
  • Que je navigue vers un autre fichier et que le dos ne semble pas avoir d'importance
  • Cela fonctionnera/ne fonctionnera pas plusieurs fois sur et dans le même fichier
  • Cela ne semble pas être pertinent pour un objet/une propriété/une méthode en particulier

J'ai vérifié toutes mes options (il ne semble pas y avoir d'options d'édition de texte pour Razor?), Essayé de vider les caches, la solution de rechargement/projets, le redémarrage de VS, qui ne semblent toujours pas fournir de motif.

Est-ce que quelqu'un a découvert cela et a une idée de l'endroit où je pourrais chercher d'autres solutions?

Exemple Voici un exemple extrêmement simple ... nouveau projet, très peu de code/fichier, vue très simple. Là 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'analyse de lambdas/vue complexe (cela est reproductible également):

 enter image description here

Mise à jour: Patterns

Les choses que j'ai remarquées:

  • Si je saisis un @model ns.ns.ns.type, cela arrive rarement vers la fin "base" des espaces de noms. C’est au fur et à mesure que je me dirige vers le type que cela arrive Celui-ci est intermittent.
  • Dans certains cas, cela fonctionne parfaitement, à chaque fois. Par exemple, j'utilise souvent des 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 posera jamais de problème)
  • Cela arrive presque tout le temps quand j'accède à mon @Model (c'est là que 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% +
  • Parfois, lorsque je travaille dans l'arborescence des objets, l'un d'eux échouera pendant le travail suivant (ex: @models ProjName.Web.App.Subscriptions.Models.AccountCreateVM... il pourrait échouer le Subscriptions mais fonctionner correctement le Models)
  • De temps en temps, commencer à taper le nom dans autocomplete le remet en marche et il recommence à fonctionner. Dans l'exemple ci-dessus, le fait de commencer à saisir Acc pour AccountCreateVM le fait fonctionner à nouveau.
43
jleach

Cela se produit pour moi tout au long de VS2015 lors des 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} après l'endroit où je tape. VS semble avoir du mal à dire où se termine la déclaration en cours et la déclaration suivante 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 en utilisant des instructions lambda:

<strong>@Html.DisplayFor(m => m.</strong>

C'est probablement la raison pour laquelle vous ne rencontrez cela que dans Razor.

La façon dont je travaille autour de ce bogue est juste d'écrire le) pour fermer la méthode. 

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

<strong>@Html.DisplayFor(m => m.)</strong>

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

Si vous utilisez une méthode nécessitant un minimum de plus que le lambda (comme RadioButtonFor), vous devrez également insérer une virgule pour chacun des paramètres supplémentaires.

<strong>@Html.RadioButtonFor(m => m.,)</strong>

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

20
friggle

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

C'est le chemin:

Utilisateurs\Votre nom\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

J'espère que cela pourra aider

4
tocqueville

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.MicrosoftASPNETandWebTools-9689

Une fois installé, le problème avait disparu. Il est probable que cette mise à jour corrige quelque chose qui pourrait être corrigé avec une version plus ancienne, mais dans les deux cas, je suis heureux.

(J'ai trouvé cela dans Visual Studio sous Outils-> Extensions et mises à jour ...-> Mises à jour-> Galerie Visual Studio)

3
Carter Medlin

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

Ou continuer à écrire sans bonne parenthèse peut utiliser la complétion suivante:

@ Html.LabelFor (m => m.Name

2
lgt945

Au lieu de...

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

Utilisation...

@Html.Partial("ManageGrid", Model.
0
Tom McDonough

Chaque fois que cette chose ennuyante m'arrive, je viens de mettre un point supplémentaire et puis ça marche. Je dois mettre le point supplémentaire à chaque fois. Par exemple, si j'écris ceci et que l'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'en ai fait une habitude jusqu'à ce que MS dispose d'un correctif. 

0
CodingYoshi