Fout: verwijzing naar typeclaims is gedefinieerd, maar kon niet worden gevonden

Ik heb een oplossing met 3 projecten:

  • ParsersBase, die een interface IParseRule definiëren
  • ParsersLibrary, die een verwijzing naar ParsersBase heeft en een klasse definieert HtmlImageUrlParseRule : IParseRule
  • ParsersLibraryTest, die een verwijzing heeft naar ParsersBase en ParsersLibrary en een testklasse definieert met enkele testmethoden

Als ik het probeer te bouwen, krijg ik een waarschuwing:

Verwijzing naar type ‘AVSoft.ParsersBase.IParseRule’ beweert dat het is gedefinieerd in ‘c:\Users\Tim\Dropbox\projects\Image Downloader\ParsersLibrary\bin\Debug\ParsersLibrary.dll’, maar het is niet gevonden

Waarom probeert VS AVSoft.ParsersBase.IParseRulete vinden in ParsersLibrary.dll? ParsersLibraryTest heeft een verwijzing naar ParsersBase, het slaat gewoon nergens op.


Antwoord 1, autoriteit 100%

Deze fout lijkt verschillende scenario’s te dekken. In mijn geval was het sluiten en opnieuw openen van Visual Studio de truc. Nadat ik Visual Studio opnieuw had opgestart, kon ik het project bouwen zoals verwacht.


Antwoord 2, autoriteit 74%

Een andere manier waarop dit kan gebeuren, is als u verschillende NuGet-pakketten gebruikt waarvan één, waarschijnlijk centraal, pakket is bijgewerkt, maar enkele aanvullende functionaliteitspakketten niet.

Om door mijn recente voorbeeld te werken – de fout was “Referentie naar type ‘ConsumerSubscriptionConfigurator<>’ beweert dat het is gedefinieerd in ‘MassTransit’, maar het kon niet worden gevonden”. Dit komt omdat we MassTransitvan 2 naar 3 hadden bijgewerkt, maar we hadden enkele van de andere optionele pakketten (MassTransit.log4neten MassTransit.Autofacniet bijgewerkt) strong>) naar hetzelfde versienummer. Het lijkt erop dat het omleiden van de assemblage alles heeft laten werken totdat we probeerden nog een extra functie te gebruiken.


Antwoord 3, autoriteit 52%

Ik had een soortgelijk probleem. De site draaide een gecachte versie van de dll en niet degene die ik had geïmplementeerd in de bin-map. Ik heb de inhoud van de tijdelijke asp.net-map gewist en hiermee is het probleem opgelost.


Antwoord 4, autoriteit 48%

Het was mijn fout, ik had in het begin een ParsersLibrary-project en hernoemde het naar ParsersBase, maar ik heb de naam van een assembly niet gewijzigd, en daarna heb ik opnieuw een ParsersLibrary-project toegevoegd.

Dus, twee projecten hadden dezelfde assembly-naam en het is niet erg goed, toch? 🙂 Assemblages overlappen elkaar, dus ik heb deze fout.


Antwoord 5, autoriteit 19%

Ik had hetzelfde probleem: verwijzing naar het type ‘Func<>’ beweert dat het is gedefinieerd in ‘mscorlib’, maar het kon niet worden gevonden. Het probleem was het volgende: mijn oplossing had Target Framework = 3.5 en ik heb een verwijzing toegevoegd naar Microsoft.Practices.Prism v 4.0 die is gebouwd tegen het framework 4.0.

Na het wijzigen van het doelframework naar 4.0 werkte het


Antwoord 6, autoriteit 10%

Ik heb vandaag deze uitzondering getroffen. Het probleem in mijn geval was dat ik some.package v2.1in mijn host had geïnstalleerd en some.package v2.3in andere projecten. Update-Packageop het hostproject naar v2.3loste het probleem op.


Antwoord 7, autoriteit 10%

In mijn geval probeerde ik een WPF-project te testen met een .NET Core (3.1)-testproject dat niet kon verwijzen naar de benodigde WindowsBase.dll.


Antwoord 8, autoriteit 6%

Het lijkt erop dat het nu wat makkelijker gaat dan voorheen.

Zoals andere antwoorden in feite al hebben aangegeven, kan deze fout het gevolg zijn van een oudere versie van hetzelfde NuGet-pakket waarin enkele van de nieuwere typen niet zijn opgenomen. Terwijl het in productie is, wordt dit over het algemeen beheerd door middel van correct versiebeheer, tijdens de ontwikkeling kan het zijn dat u hetzelfde versienummer opnieuw gebruikt wanneer u wijzigingen aanbrengt. En dat is een waarschijnlijke plaats waar dit probleem kan optreden.

Om dit op te lossen, kunt u de cache vaak als volgt wissen:

  1. Ga in Visual Studio naar Tools > NuGet Package Manager > Package Manager Settings.
  2. Navigeer in het pop-upmenu naar NuGet Package Manager > General.
  3. Klik in de opties aan de rechterkant op Clear All NuGet Cache(s).

Antwoord 9, autoriteit 3%

Het bijwerken/consolideren van pakketten heeft niet geholpen. Zelfs een schone repo en een herstart van Visual Studio losten het voor mij niet op.

Maar opnieuw opstarten loste het probleem op!


Antwoord 10

ParsersLibraryTest moet verwijzen naar ParsersBase. Het tweede deel van de fout zou moeten zijn: “U moet een verwijzing toevoegen naar de assembly ‘ParsersBase…”


Antwoord 11

Ik heb alle bovenstaande antwoorden geprobeerd, maar geen enkele loste mijn probleem op.

Uiteindelijk heb ik mijn laatste code (GIT) ingecheckt en vervolgens de repository opnieuw gekloneerd op een andere locatie.

Niet ideaal, maar het probleem is in ieder geval opgelost.


Antwoord 12

Ik had hetzelfde probleem: Verwijzing naar het type ‘Func<>’ beweert dat het is gedefinieerd in ‘mscorlib’, maar het kon niet worden gevonden.Ik heb een lib van .Net 4 waarnaar werd verwezen door een .Net 3.5-programma. Na het upgraden van beide naar 4.61 werkte het.

Het lijkt erop dat Func<T>ontbreekt in .Net 3.5 en dat het voldoende zou zijn geweest om die voorbeeld-app te upgraden.

Verdere exp: iemand had een handtekening toegevoegd in het bibliotheekproject (.Net 4) die een parameter Func<T>gebruikt. Maar het voorbeeldprogramma (3.5) bestond al en liep tot nu toe prima. Maar op het moment van hercompilatie botste een afhankelijkheid van een afhankelijkheid. Omdat mscorelib-3.5 al was geladen. Alles gebeurt tijdens de compilatie.


Antwoord 13

De enige manier waarop ik deze fout kon oplossen, was door alle gerelateerde nugetpakketten te verwijderen en ze vervolgens opnieuw te installeren. Triest maar waar.


Antwoord 14

Ik worstel al een tijdje met deze fout en ben er eindelijk uitgekomen.
Dit is hoe ik het kan reproduceren en hoe ik het heb opgelost.

Het probleem was:
Er werd naar de pakketten verwezen door met de rechtermuisknop te klikken -> voeg referentie toe -> Bladeren (kies). Daarna werden ze weer toegevoegd als NuGet-pakketten.

De oplossing was:

  • Verwijder de toegevoegde referenties.
  • Verwijder de geïnstalleerde pakketten uit .csproj.
  • Installeer de vereiste pakketten opnieuw vanuit de NuGet-pakketbeheerder.
  • Sluit Visual Studio en open het opnieuw.
  • Project opschonen.
  • Project bouwen.

Opmerking: als u de bestanden waarnaar wordt verwezen niet kunt verwijderen (geen optie Verwijderen bij rechtsklik), probeer dan Visual Studio te sluiten en opnieuw te openen. Of verwijder of verplaats de dll waarnaar wordt verwezen en probeer het opnieuw.


Antwoord 15

De opmerking van @binki heeft me geholpen;

alle .vs-, bin- en obj-mappen verwijderen en vervolgens het project opnieuw openen


Antwoord 16

Voor mij had ik een onjuist project gekozen, ik was een klassenbibliotheekproject aan het maken, ik moest “Klassebibliotheek (.Net-framework)” kiezen, maar ik had “Klassebibliotheek (.Net-standaard)” gekozen

Het vervangen van dezelfde loste het probleem op.


Antwoord 17

Het probleem was het volgende: mijn oplossing had Target Framework = 3.1 en ik heb een verwijzing toegevoegd naar Microsoft.EntityFrameworkCore.SqlServer v 2.0 die tegen het framework is gebouwd.


Antwoord 18

Ik had dit probleem met een van mijn bibliotheekprojecten in een oplossing, nadat ik was overgestapt van .NET Framework naar .NET Standard. Uiteindelijk heb ik de projectreferentie verwijderd en opnieuw toegevoegd in het toepassingsproject dat het probleem rapporteerde. Vreemd genoeg was het enige dat veranderde, het overschakelen van de project-GUID naar kleine letters van de vorige hoofdletters.

Other episodes