web-dev-qa-db-fra.com

Erreur: La référence au type dit qu'il est défini, mais qu'il est introuvable.

J'ai une solution avec 3 projets:

  • ParsersBase, qui définit une interface IParseRule
  • ParsersLibrary, qui a une référence à ParsersBase et définit une classe HtmlImageUrlParseRule: IParseRule
  • ParsersLibraryTest, qui a une référence à ParsersBase et ParsersLibrary et définit une classe de test avec certaines méthodes de test

Lorsque j'essaie de le construire, je reçois un avertissement:

La référence au type 'AVSoft.ParsersBase.IParseRule' prétend qu'il est défini dans 'c:\Utilisateurs\Tim\Dropbox\projets\Téléchargeur d'images\ParsersLibrary\bin\Debug\ParsersLibrary.dll', mais est introuvable.

Pourquoi VS essaie de trouver AVSoft.ParsersBase.IParseRule dans ParsersLibrary.dll? ParsersLibraryTest a une référence à ParsersBase, cela n'a aucun sens.

36
Tim Rudnevsky

C’était ma faute, j’avais un projet ParsersLibrary au début, puis renommé ParsersBase, mais je n’ai pas renommé un nom d’assemblée, puis j’ai ajouté un projet ParsersLibrary.

Donc, deux projets portent le même nom d’Assemblée et ce n’est pas très bon, n’est-ce pas? :) Les assemblages se chevauchent, j'ai donc cette erreur.

10
Tim Rudnevsky

J'avais un problème similaire. Le site exécutait une version en cache de la dll et non celle que j'avais déployée dans le répertoire bin. J'ai effacé le contenu du dossier temporaire asp.net et cela a résolu le problème.

12
wiseowl2828

Cela peut également se produire si vous utilisez plusieurs packages NuGet où un package, probablement central, a été mis à jour mais certains packages de fonctionnalités supplémentaires ne l'ont pas été.

Pour travailler à travers mon exemple récent, l'erreur était "La référence au type" ConsumerSubscriptionConfigurator <> "prétend qu'il est défini dans" MassTransit ", mais que celle-ci est introuvable". En effet, nous avions mis à jour MassTransit de 2 à 3, mais nous n'avions pas mis à jour certains des autres packages optionnels ( MassTransit.log4net et MassTransit.Autofac ) vers le même numéro de version. Il semble que la redirection d'assemblage ait tout fait fonctionner jusqu'à ce que nous essayions d'utiliser une fonctionnalité supplémentaire.

9
Rob Church

Cette erreur semble couvrir une variété de scénarios. Dans mon cas, fermer et ré-ouvrir Visual Studio était le truc. Après avoir redémarré Visual Studio, j'ai pu construire le projet comme prévu.

7
Scott Simontis

J'ai eu le même problème: une référence au type 'Func <>' prétend que cela est défini dans 'mscorlib', mais il n'a pas pu être trouvé. Le problème était le suivant: ma solution avait Target Framework = 3.5 et j'ai ajouté une référence à Microsoft.Practices.Prism v 4.0 qui est construite sur le framework 4.0.

Après avoir changé le cadre cible en 4.0, cela a fonctionné

3
Alexandra Sh

Je frappe cette exception aujourd'hui. Le problème dans mon cas était que j'avais some.package v2.1 installé dans mon hôte et some.package v2.3 installé dans d'autres projets. Update-Package sur le projet hôte à v2.3 a résolu le problème.

2
Chris Marisic

ParsersLibraryTest doit référencer ParsersBase. La deuxième partie de l'erreur devrait se lire "Vous devez ajouter une référence à Assembly 'ParsersBase ..."

0
Slugart

J'ai eu le même problème: La référence au type 'Func <>' prétend qu'il est défini dans 'mscorlib', mais il est introuvable. J'ai une bibliothèque de .Net 4 qui a été référencée par un programme .Net 3.5. Après la mise à niveau à la version 4.61, cela a fonctionné.

On dirait que Func<T> manque dans .Net 3.5 et la mise à niveau de cet exemple d'application aurait suffi.

En outre exp: Quelqu'un avait ajouté une signature dans le projet de bibliothèque (.Net 4) qui utilise un paramètre Func<T>. Mais l'exemple de programme (3.5) existait déjà et fonctionnait bien jusqu'à présent. Mais au moment de la recompilation, la dépendance d’une dépendance s’est heurtée. Parce que mscorelib-3.5 avait déjà été chargé. Tout se passe au moment de la compilation.

0
Robetto

J'ai essayé toutes les réponses ci-dessus mais aucune n'a résolu mon problème.

Finalement, j'ai archivé mon dernier code (GIT), puis recloné le référentiel dans un emplacement différent.

Pas idéal, mais au moins le problème est résolu.

0
Kyle Barnes