2012-09-14 2 views
20

J'ai un peu de problème ici, dans notre société, nous avons une couche DA auto-roulée qui utilise des génériques auto-référencés. Dans Visual Studio 2010, l'IDE était parfaitement satisfait de cela, mais 2012 semble avoir des difficultés, même si au moment de la construction, il réussit.Visual Studio 2012 - Erreurs d'analyse générique auto-référencées

Voici un exemple:

Example of parsing error

La définition DataObject est la suivante:

[TypeDescriptionProvider(typeof(HyperTypeDescriptor.HyperTypeDescriptionProvider))] 
public class DataObject<T> : 
    INotifyPropertyChanged, 
    IDataErrorInfo, 
    IEditableObject, 
    IDataObject 
    where T : 
     DataObject<T>, 
     new() 

Je me rends compte qu'il n'est pas la plus simple des définitions, mais son droit, et il builds parfaitement bien. Cependant, ce «problème» fait échouer l'intellisense, ainsi que la fonction «Go To Definition», ce qui, bien entendu, est frustrant.

J'ai essayé d'enlever et de rajouter les références, mais le problème persiste.

VS2010 est parfaitement heureux et c'est ce que je suis retourné à l'utilisation, VS2012 est très gentil et réactif, mais si ce problème persiste, c'est un gros problème.

Vous avez des idées?


Vous voulez faire deux ou trois choses claires, cette question est une question intermittente (ce qui est une douleur comme vraiment difficile de trouver la cause racine).

Il casse l'intellisense et «va à la définition» partout, pas seulement pour la classe avec l'erreur. Je vais essayer de construire un exemple de solution à soumettre pour se connecter, mais le temps n'est pas de mon côté ces derniers temps.

+1

Quelle est l'erreur ou l'exception que vous recevez? –

+0

Je viens de rouvrir VS20112 pour essayer de copier l'erreur que la ligne rouge squiggly ci-dessus indique et de ne pas le faire pour le moment, mais il le fera à nouveau. Fondamentalement, l'erreur pour ce qui précède était qu'il ne pouvait pas trouver la définition de la classe - comme si j'avais fait ctrl +. il offrirait de générer le type pour moi, en dépit d'être dans le type nécessaire. – Marlon

+7

Sélectionnez l'infrastructure complète au lieu du profil client. Si cela ne vous aide pas alors vous avez vraiment besoin de poster ceci à connect.microsoft.com, les seuls gars qui peuvent résoudre ce problème. Ils auront besoin d'un bon projet de repro. –

Répondre

1

Cela peut se produire si vous ouvrez la même solution/projet avec deux instances de Visual Studio (même deux Visual Studio 2010 par exemple). Le mécanisme Intellisense utilise des fichiers .NCB que les instances de Visual Studio ne peuvent pas réellement partager. Dans ce cas, le comportement d'Intellisense est étrange.

+0

Simon, par intérêt, savez-vous que si le déchargement/rechargement du projet provoque VS à reconstruire ces fichiers .NCB - comme le faire semblait résoudre le problème intellisense quand il est arrivé. – Marlon

+0

Non, je ne suis pas au courant de cela, mais cela ne me surprendrait pas. Je pense que le résultat de l'ouverture du même projet deux fois est indéterminé (en ce qui concerne Intellisense) –

1

Semble stupide, mais je rencontre des problèmes similaires avec le nouveau code qui est introduit ou modifié avec intellisense. Je l'ai retrouvé pour avoir besoin d'effectuer un tout sauvegarder, ou parfois même nettoyer et reconstruire/compiler avant qu'intellisense reconnaisse correctement le code en cours de validité. Un semblable à VS2010 qui peut parfois être dupliqué si vous faites une structure de classe, puis éditer le code sur une autre classe pour l'utiliser, puis rebondir, extraire des fonctions de classe et en ajouter de nouvelles sans sauvegarder.

1

Parfois, et ce n'est pas toujours le cas, ReSharper peut causer des problèmes avec les références et la fonctionnalité GTD. L'avez-vous installé?

+0

non, propre VS installer, pas de plugins installés en dehors de ceux de Microsoft qui sont pré-installés. – Marlon