nicht fügen Sie einen Verweis .NET
Ich habe eine DLL, die ich hinzufügen möchte, als einen Verweis auf mein Projekt, aber jedesmal, wenn ich versuchen, es zu tun, ein dialog erscheint, sagt mir:
Den Verweis konnte nicht Hinzugefügt werden. Bitte stellen Sie sicher, dass die Datei ist barrierearm, und dass Sie eine gültige assembly oder COM-Komponente.
Ich habe ein wenig recherchiert und herausgefunden, dass der Fehler ist, denn die Montage ist nicht verwaltete .NET und dass ich verwenden soll DLLImport-Attribut, allerdings habe ich genau die gleiche Lösung in einem anderen computer, und everythig funktioniert einfach gut.
Der Unterschied ist, dass der neue computer, den ich bin versucht, um den Verweis hinzuzufügen ist x64 und die alte x86.
Habe ich sowohl die x64-und x86-DLL 's, und kann' T fügen Sie keine. Warum ist das passiert?
InformationsquelleAutor Daniel | 2012-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht hinzufügen von nicht verwalteten DLLs als Verweise im Visual Studio, unabhängig von der 32/64 "bittyness". Und ich bezweifle, dass es funktioniert auf Ihrem x86-Maschine.
Gibt es einen Unterschied zwischen "normalen" DLLs und COM-DLLs.
Können Sie fügen Sie einen Verweis auf eine COM-DLL, nachdem es registriert wurde, mit dem system (eigentlich verweisen Sie auf die freiliegenden COM-Objekt und einen Verweis auf die DLL wird automatisch Hinzugefügt). Diese kann getan werden, auf die "COM"-Tab des "Add reference" - dialog (hier müssen Sie sicherstellen, dass Ihr Projekt ist gebaut wie ein x86-target in den meisten Fällen).
"normale" DLLs können - wie gesagt - nicht auf alle. Sie können gehören Sie in der Lösung (rechts-Klick-Lösung, wählen Sie "Hinzufügen vorhandene Datei"), aber Sie werden nicht verwiesen werden, es sei denn, Sie erklären etwas, wie
Ich vermute, dass in Ihr eine andere Lösung, es ist eine Art wrapper-DLL, die Sie verweisen auch auf und enthält die DLL-Importe.
Ihre Technik funktioniert nur mit einem verwalteten DLLs.
InformationsquelleAutor Thorsten Dittmar
Gibt es mehrere Antworten auf Ihre Frage:
können Sie Gesicht dieses problem, da die assembly, die Sie hinzufügen möchten, ist eine gezielte und kompiliert für x86-Prozessor-Architektur. Versuchen Sie einfach, ändern Sie die Target-Plattform von x64 zu x86 und selbst wenn, dass doent Arbeit, versuchen, es zu ändern AnyCPU. AnyCPU Plattform Ziel macht Ihre ausführbare Datei der Anwendung auf beide Arten von Architektur, denn es ist Architektur-kostenlos.
Wenn die Montage passiert zu sein eine DLL, und es kann nicht Hinzugefügt werden, als Referenz, dann ist es nicht eine COM sowie .NET Montage. Es wird eine native Montage, wie andere (z.B. shell32.dll, user32.dl etc). Sie haben, um Sie zu benutzen über DllImport - Attribut, aber Sie müssen zuerst die Dokumentation der dll, um die Liste der Funktionen implementiert, die dll.
InformationsquelleAutor Uday0119
Möglicherweise die Type Library Importer (Tlbimp.exe) helfen können. Es erstellt einen wrapper .NET-dll. Die original-COM-DLL muss noch da sein und müssen registriert werden! (Versuchen Sie es registrieren ersten, bevor Sie versuchen, es mit TlbImp.)
Wenn die 64-bit-version nicht funktionieren, so setzen die Plattform Ziel zu
x84
im Projekt-build-Eigenschaften.InformationsquelleAutor Olivier Jacot-Descombes
Einige DLL ' s dürfen nicht als Referenz Hinzugefügt, aber Sie können jedoch weiterhin verwendet werden, indem Sie C# mit dem berühmten
[DllImport( params go here...)]
Möglicherweise müssen Sie auch die
inspect
die dll, um die Adresse der Funktionen, die Sie verwenden möchten . Dies kann erreicht werden, indemGetProcAddress
InformationsquelleAutor squelos
Hinzufügen absoluten Pfad der dll DllImport
InformationsquelleAutor kokabi
nachdem er versucht, Sie analysieren das Problem, entdecke ich die folgenden
[1] manchmal sieht man die Referenz in der Referenz-manager, aber Sie finden nicht die dll-Dateien in dem genannten Verzeichnis, in dem
der Verweis-manager ist nicht in der Lage ist, aktualisieren Sie die Referenzen.
[2] prüfen Sie die Erlaubnis Ihrer dll-Datei.
InformationsquelleAutor Brainstroming
Versuchen Sie, Ihre Plattform Ziel von Any CPU auf x86. (Projekt-Eigenschaften -> Erstellen -> die Plattform Target)
InformationsquelleAutor Ben