28 votes

Les références d'assembly aléatoires échouent ("Vous manquez une directive using ou une référence d'assembly?")

Ma demande a un mélange de 3,5 et 4,0 ciblées assemblées. Je suis en train de travailler sur un nouveau service Windows ciblage 4.0 et le projet semble soudainement incapable de voir les autres assemblées dans la solution. Sens, à construire, toutes les références à ces de certains autres assemblées produire l'erreur suivante:

Le type ou le nom d'espace de noms '[X] " n'existe pas dans l'espace de noms '[Y]' (avez-vous besoin d'une référence d'assembly?)

Si je supprime la référence du projet et l'ajouter de nouveau, le rouge squigglies en aller et Intellisense coups de pied à nouveau comme il est censé le faire. Tous les autres projets de la solution de construire sans problème. Mais dès que j'essaie de construire ce nouveau projet, les erreurs de retour.

L'un des défaut de références est à notre Core.dll, qui cible 3.5. Nous avons récemment ajouté un CoreEx.dll le ciblage 4.0, avec l'espace de noms de partage entre les assemblées. Le nouveau service peut voir CoreEx.dll mais pas Core.dll... c'est à dire, quand je commence à taper using Core.Utilities... Intellisense ramasse sur le plus petit ensemble d'espaces de noms CoreEx.dll mais ne montrent aucune qui n'apparaissent que dans Core.dll. Je suis sûr que la solution intégrée avec succès après l'ajout de cette, mais c'est un notable changement récent.

Un autre défaut de référence est au cœur de notre Data.dll qui détient un tas de jeux de données et Entity Framework choses. Celui-ci a été récemment migré à 4.0. Encore une fois, je suis presque certain que la solution construite après la migration du projet, mais il vaut la peine de mentionner.

Le dernier défaut de référence est un assemblage qui utilise l'espace de noms d'un niveau "haut" à partir du service. E. g., la problématique du projet est basée à l'extérieur de l'espace de noms ProductName.Component.ComponentService et il est incapable de voir le projet en fonction de l'espace de noms ProductName.Component. Celui-ci a été récemment créé avec la problématique du projet et également des cibles 4.0.

Comme vous pouvez le voir, il ne semble pas être n'importe quelle rime ni raison, à laquelle assemblée sont les références à défaut... et le projet problématique pouvez référencer correctement certains des autres assemblées dans la solution. J'ai essayé de nettoyer, re-construction, de redémarrer Visual Studio... rien n'est fixé définitivement. Ce pourrait être la cause?

56voto

Dimitri Points 3651

Vérifiez la plate-forme cible du nouveau projet et assurez-vous qu'il ne cible pas le profil client .NET 4. Si c'est le cas, changez-le en .NET 4 normal

2voto

user3770181 Points 11

J'ajoutais des projets à une solution qui utilisait .net 4.5. Les projets que j'avais ajoutés étaient par défaut à 4.5.1. Cela a rendu 4,5 bibliothèques incompatibles avec les nouveaux projets. Je suis allé dans les propriétés de mes nouveaux projets et les ai fait cibler 4.5 au lieu du 4.5.1 par défaut. Après avoir fait cela, ma solution a pu se construire.

0voto

DocMax Points 5744

Les dépendances sont-elles correctement définies dans la solution? J'ai vu plus d'une fois où le projet A dépend du projet B, mais parce que la dépendance entre les deux n'a pas été définie, la construction échoue sporadiquement.

La cause sous-jacente dans ce cas est que la construction est ordonnée n'est pas déterministe et le succès / l'échec dépend de choses comme les projets qui construisent (en fonction de ce qui a changé) et ceux qui construisent en premier (quand plus d'une génération).

0voto

Il a travaillé pour moi quand j'ai changé le framework cible à 4,0..Mais ce n'était pas la solution que nous voulions. Nous Voulions utiliser visual studio 2010 Premium pour notre projet, mais l'intention était de ne PAS l'utiliser .net 4.0...Le principal projet de bibliothèque de classes(.net 2.0) faisait référence à la dll "system.web.abstractions.dll"...j'ai ajouté la référence à cette dll dans d'autres projets(.net 2.0) qui fait référence à la classe principale de la bibliothèque...la solution compilé sans le moindre problème...donc ça pourrait être le cas avec votre solution visual studio...

Mais tout fonctionne bien si nous utilisons VS 2008 professionnel..nous avons besoin d'aucune solution de contournement et tout fonctionne comme par magie...

0voto

Louhike Points 148

Veuillez également noter que cela peut se produire si vous modifiez l'espace de noms mais que vous n'avez pas modifié le nom de l'assembly dans les propriétés du projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X