Ich erhalte diesen Fehler:
Der Typ- oder Namespace-Name 'AutoMapper' wurde nicht gefunden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)
Das Lustige ist, dass ich diese Referenz bereits in meinem Projekt habe:
Und das ist mein Code:
using System.Collections.Generic;
using DataContract;
using SelectorDAL;
using AutoMapper;
namespace SpecimenSelect
{
public class SpecimenSelect : ISpecimenSelect
{
public SpecimenSelect()
{
SetupMaps();
}
private static void SetupMaps()
{
Mapper.CreateMap<SpecimenDetail, SpecimenDetailContract>();
}
Die andere seltsame Sache ist, dass ich zwei andere Projekte in meiner Lösung habe, die beide AutoMapper verwenden und auf genau dieselbe AutoMapper.dll-Datei verweisen. Sie funktionieren beide einwandfrei.
Hier ist ein Screenshot von einem:
und hier ist dieser Code (der gut kompiliert):
using System.Collections.Generic;
using AutoMapper;
using DataContract;
using SelectorDAL;
namespace PatientSelect
{
public class PatientSelect : IPatientSelect
{
public PatientSelect()
{
SetupMaps();
}
private void SetupMaps()
{
Mapper.CreateMap<Patient, PatientContract>();
Mapper.CreateMap<OrderedTest, OrderedTestsContract>();
Mapper.CreateMap<Gender, GenderContract>();
}
Beide Referenzen scheinen dieselben Daten auf der Eigenschaftenseite zu haben.
Was vermisse ich?
Ich habe es versucht:
- Visual Studio neu starten
- Referenzieren ohne using-Anweisung (dh
AutoMapper.Mapper.CreateMap
) - Reinigen und neu aufbauen
Irgendwelche anderen Ideen?
Antworten:
Stellen Sie sicher, dass Ihr Projekt nicht für die Verwendung des .NET Framework 4-Clientprofils eingerichtet ist.
Sie können dies überprüfen / ändern, indem Sie mit der rechten Maustaste auf Ihr Projekt (nicht auf die Lösung) klicken und Eigenschaften -> Anwendung -> Zielframework auswählen . Das Ziel-Framework ist ein Dropdown-Menü auf dieser Seite.
Dies ist ein Problem in Visual Studio (ich würde es sogar als Fehler bezeichnen). AutoMapper erfordert Assemblys, die vom .NET Framework 4-Clientprofil ausgeschlossen sind. Da Ihr Projekt diese Version des Frameworks verwendet, bricht es.
Ein ähnlicher Fehler wird auf den Erstellungsprozess übertragen, wenn die .NET Framework-Version für das Projekt, auf das Sie verweisen, höher ist als das Projekt, auf das verwiesen wird. Das heißt, ein Projekt-Targeting 4.5, das auf ein Projekt-Targeting 4.5.1 verweist, gibt denselben Fehler aus.
In diesem Fall muss eine bessere Fehlermeldung angezeigt werden, da es keine rationale Erklärung dafür gibt, warum sie nicht erstellt wird, da Sie in der Fehlermeldung aufgefordert werden, auf eine Assembly zu verweisen, auf die Sie eindeutig verwiesen haben.
quelle
Lassen Sie mich eine dumme Frage stellen: Könnte es zwei automapper.dll- Dateien geben? Einer mit einem
AutoMapper
Namespace und einer ohne? Bestätigen Sie die Pfade in beiden Projekten.Mir ist auch aufgefallen, dass die Reihenfolge der
using
Befehle unterschiedlich ist. Es sollte keine Rolle spielen, aber haben Sie versucht, sie zu mischen?quelle
Wenn Ihre Klasse nicht kompiliert wird, auch wenn sie sich im Projekt befindet, überprüfen Sie diese:
quelle
Dies muss die einfachste Lösung sein, wenn Ihnen alle anderen Antworten nicht helfen
Ich habe unter den Antworten gesucht, was mit meinem Setup nicht stimmt. Ich habe alle ausprobiert - keine hat funktioniert. Dann habe ich festgestellt, dass Visual Studio 2018 von Microsoft entwickelt wurde . Also habe ich getan, was die meisten Leute tun,
Visual Studio neu gestartet und es hat funktioniert
quelle
Ich habe dieses Problem behoben, indem ich mit der rechten Maustaste auf den Ordner mit den Dateien geklickt und Aus Projekt ausschließen und dann erneut mit der rechten Maustaste geklickt und In Projekt einschließen ausgewählt habe (Sie müssen zuerst Alle Dateien anzeigen aktivieren , um den ausgeschlossenen Ordner sichtbar zu machen).
quelle
¯\_(ツ)_/¯
Ich habe ein ähnliches Problem mit Referenzen, die in VS2010 nicht erkannt wurden, und die Antworten hier konnten es nicht korrigieren.
Das Problem in meiner Lösung hing mit der Erweiterung des Pfades zusammen, in dem sich das Projekt befand, auf das verwiesen wurde. Während ich mit SVN arbeite, habe ich einen Zweig eines Repositorys erstellt, um einige Tests durchzuführen, und dieser Zweig hat die Pfadstruktur um zwei Ebenen erhöht, sodass der Pfad zu lang wurde, um in Windows verwendet werden zu können. Dies hat keinen Fehler ausgelöst, aber den Namespace der Projektreferenz nicht erkannt. Als ich den Ort des Projekts korrigierte, um einen kleineren Pfad zu haben, ging alles gut.
quelle
In meinem Fall wurde die referenzierte DLL in einer höheren Version von .Net Framework erstellt. Nachdem ich die Referenz hinzugefügt hatte, konnte ich sie verwenden. Sobald ich einen Build erstellt habe, wird der Fehler "Fehlende Referenz" angezeigt. Ich aktualisiere die DLL, der Fehler wird gehen, aber es würde nie bauen. In diesem Beitrag habe ich die Framework-Version überprüft und konnte sie beheben, indem ich das referenzierte Projekt in derselben Version erstellte.
quelle
Möglicherweise befindet sich die Typentabelle des Projekts in einem falschen Zustand. Ich würde versuchen, die Referenz zu entfernen / hinzuzufügen. Wenn dies nicht funktioniert, erstellen Sie ein anderes Projekt, importieren Sie meinen Code und prüfen Sie, ob dies funktioniert.
Ich bin bei der Verwendung von VS 2005 darauf gestoßen. Man würde jedoch erwarten , dass MS dieses spezielle Problem inzwischen behoben hat.
quelle
Die Frage wurde bereits vergeben, es sind jedoch noch keine weiteren Details beschrieben, die überprüft werden müssen.
Auch ich hatte dieses Verhalten, bei dem in Projekt A auf Projekt B verwiesen wurde, der Namespace von Projekt B in Projekt A jedoch nicht erkannt wurde. Nach einigem Graben stellte ich fest, dass mein Pfad zu lang war. Durch die Reduzierung des Projektpfads (sowohl A als auch B) wurden die Referenzen sichtbar und verfügbar.
Ich habe diese Theorie getestet, indem ich Projekt C mit einer viel geringeren Pfadtiefe erstellt habe. Ich habe in Projekt A auf Projekt C verwiesen. Die Referenzen haben wie erwartet korrekt funktioniert. Ich habe dann Projekt C aus der Lösung entfernt, Projekt C lediglich auf einen tiefen Pfad verschoben, genau wie Projekt B, und Projekt C wieder zur Lösung hinzugefügt und versucht, es zu kompilieren. Ich hatte dann keine Sicht mehr, um C-Objekte zu projizieren.
quelle
In meinem Fall hatte ich eine Klassenbibliothek kopiert und den "Assembly Name" in den Projekteigenschaften nicht geändert, sodass eine DLL die andere überschrieb ...
quelle
Dies ist mir in Visual Studio 2019 passiert. Für mich habe ich versucht, auf ein anderes Projekt in meiner Lösung zu verweisen. Hier sind die Schritte, die ich unternommen habe, falls es jemand anderem hilft:
Ich war verwirrt, weil ich nach den Schritten 1 und 2 immer noch den Fehler bekam, aber das Erstellen des Projekts schien ihn zu beheben.
quelle
Ich hatte ein ähnliches Problem damit, dass der Namespace / die Methode während der Ausführung nicht gefunden wurde, obwohl dies während der Kompilierung in Ordnung war. Der Grund dafür scheint zu sein, dass die Assembly, auf die ich verwies, in GAC bereitgestellt und seitdem geändert wurde, also als ich auf die Assembly verwies In Visual Studion wurde die neueste Version verwendet, aber zur Laufzeit wurde die Version für GAC verwendet.
quelle
In meinem Fall habe ich den Fehler nur in VS 2015 erhalten. Beim Öffnen des Projekts in VS 2017 war der Fehler verschwunden.
quelle
Verrückt. Ich weiß.
Versuchte alle Optionen hier. Neustart, Bereinigung, manuelles Einchecken generierter DLLs (dies ist von unschätzbarem Wert, um zu verstehen, ob Sie selbst durcheinander sind).
Ich habe es zum Laufen gebracht, indem ich die Ausführlichkeit von MSBuild in den Optionen auf "Detailliert" gesetzt habe.
quelle
Diese Frage wurde bereits für das Originalplakat beantwortet, aber falls jemand in einem MS-Test-Projekt darauf stößt:
Klicken Sie in Visual Studio auf das Menü Test -> Testeinstellungen -> Standardprozessorarchitektur und stellen Sie sicher, dass die Architektur mit der der anderen Assembly übereinstimmt, auf die Sie verweisen. Wenn die andere Baugruppe x64 ist und Ihre Testeinstellungen x86 sind, können die Symptome auftreten, die auf dem Originalposter aufgetreten sind.
quelle
Ich habe an einem Xamarin-Projekt gearbeitet und wie immer hat das Löschen des obj-Ordners und das Neuerstellen mein Problem gelöst. Der Namespace, den mein VS nicht erkannte, war übrigens ein Code in meinem eigenen Projekt
quelle
In meinem Fall hat das Entfernen / Hinzufügen dieser Baugruppe funktioniert.
quelle
Ich hatte ein ähnliches Problem, dessen Fehlerbehebung einige Zeit in Anspruch nahm, und dachte daher, es zu teilen:
Der Namespace, der in meinem Fall nicht aufgelöst werden konnte, war Company.Project.Common.Models.EF . Ich hatte eine Datei in einem neuen Company.Project.BusinessLogic.Common- Namespace hinzugefügt .
Die meisten Dateien hatten eine
Und dann die Modelle als Common.Models.EF referenzieren . Alle Dateien, die auch eine hatten
Fehlgeschlagen, da VS nicht bestimmen konnte, welcher Namespace verwendet werden soll.
Die Lösung bestand darin, den zweiten Namespace in Company.Project.BusinessLogic.CommonServices zu ändern
quelle
Visual Studio 2019 neu starten - das hat es geschafft.
quelle