Benutzer mit den meisten Antworten
DLL erzeugen und in anderen Projekten verwenden

Frage
-
Hallo, ich wollte einige Funktionen schreiben, welche ich gerne immer wieder verwenden will. Dachte mir nun, dass dies ganz gut über DLL´s geht. Ich habe jetzt gelesen, dass man diese erzeugt, indem man einen Klassenbibliothek erstellt und diese erzeugen lässt. nun kann ich in anderen Projekten über "Verweis hinzufügen" diese einfügen, aber jetzt muss ich doch noch eine using einfügen, oder? Diese markiert er mir nun rot und sagt, dass er sie nicht finden kann. kann mir jemand helfen?
Antworten
-
B,
eine blosse Assembly (DLL-Lib) sollte auch im Studio ganz 'normal' per:
Object Browser - Objektkatalog
http://msdn.microsoft.com/de-de/library/exy1facf.aspx
sichtbar sein, inkl Namespaces.
Einfach im Projekt-Explorer/Baum unter den Verweisen die fragliche DLL doppelklicken
[Da muss man weder raten noch 'reflektieren']- Als Antwort markiert Bensen83 Mittwoch, 29. Dezember 2010 22:29
Alle Antworten
-
...indem man einen Klassenbibliothek erstellt und diese erzeugen lässt. nun kann ich in anderen Projekten über "Verweis hinzufügen" diese einfügen, aber jetzt muss ich doch noch eine using einfügen, oder?
Hallo B,
ja, beachte etwa - das 'using' bezieht den/die Namespace(s) der Assembly (DLL), nicht etwa den Dll-Namen.
Alles weitere ist in MSDN und meisten Büchern eigentlich vollumfänglich beschrieben.
Verwenden von Namespaces (C#-Programmierhandbuch)
http://msdn.microsoft.com/de-de/library/dfb3cx8s.aspx
Beachte weiter auch, die Klassen in den entsprechenden Namespaces deiner DLL-Assembly müssen sinnvollerweise etwa typisch 'public' erreichbar sein. -
Hallo Bensen,
wenn es mit using nicht geht check bitte folgendes
a) Ist die Klasse in deiner DLL als public definiert?
b) Hast du deinem Projekt unter "Referenzen" eine Referenz auf deine erstellte DLL hinzugefügt?
c) Stimmt der im using angegebene Namespacename mit dem Namespace deiner Klasse (siehe a) überein?Dann sollte es eigentlich funktionieren.
Martin
-
Hallo B.,
- > indem man einen Klassenbibliothek erstellt und diese erzeugen lässt. nun kann ich in anderen Projekten über "Verweis hinzufügen" diese einfügen, aber jetzt muss ich doch noch eine using einfügen, oder?
ja, genau so. Jetzt muss sie nur noch public in der Klassenbibliothek definiert sein - und ggf. Groß-Kleinschreibung beachtet sein. Um das using automatisch zu erreichen, kannst Du folgendes machen:
Wenn Du die Klassenbibliothek über (möglichst Projekt-) Verweise eingebunden hast (gleiches .NET Framework), kannst Du normal den Klassennamen einfach eintippen, dann, wenn er dann "unterkringelt" ist, [Strg - . ] (Control-Punkt/Edit.Generate und dann [Enter]) drücken, dann ersetzt Visual Studio ggf. selbstständig das using. Das ist in der Praxis immer eine ziemliche Zeitersparnis.Nachtrag: und das geht auch ohne Reflector wie oben beschrieben, auch bei unbekannten DLLs. Und 'by the way' normal kann man sich die Klassen auch durch Doppelklick auf die DLL unter Projektmappenexplorer/Verweise anschauen. Und dort kann man auch auf "Suchen" klicken und dann nur seine Klassennamen in der DLL finden. Aber das ganze ist eben nicht nötig, da das über [STRG .] schon von der IDE gut unterstützt wird.
ciao Frank -
B,
neben dem von mir bereits gestern genannten 'public' für Klassen, achte auch auf die Vorgehensweise beim referenzieren der 'Klassenbibliothek':
da sollte man (mind im frühen Entwicklungsstadium empfohlen) nicht etwa direkt einen Verweis zB auf die 'nackte' DLL-Datei machen, sondern besser:
1.) zuerst das Bibliotheks-Projekt (csproj) in dieselbe Projektmappe der Ziel-App aufnehmen,
2.) im App-Projekt einen Verweis auf das Bibliotheks-Projekt aufnehmen [eben nicht DLL].
(bzw du erstellst von Anfang an beide Projekte in derselben Projektmappe)
PS: und bei beiden Projekten sollte die Zielframework-Version (2.0/3.x/4.) vorerst möglichst 'gleich' sein. -
Hallo Bensen,
wenn es eine .Net DLL ist, kannst Du Dir diese anschauen. Ein mögliches Tool ist hier z.B. .Net reflector von Red Gate (http://www.red-gate.com/products/dotnet-development/reflector/).
Der MSIL Disassembler (ildasm.exe) kann sowas natürlich auch, aber die GUI von Reflector ist ganz nett und für slche kleinen Aufgaben ideal. (http://msdn.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx)
Mit den besten Grüßen,
Konrad
-
Hallo Bensen,
denn Namespace weisst Du zwar in der Regel nicht, vielleich hilft Dir aber folgendes:
Wenn ich eine Klassenbibliothek als Projekt im Visual Studio anlege, verwendet das Visual Studio den Projektnamen als Namespace. Sollte der Orginalautor der DLL dies nicht geändert haben, wäre das ein guter Startpunkt.
Sollte dies nichts nutzen, würde ich die DLL in den .NET Reflector (http://www.red-gate.com/products/dotnet-development/reflector/ ) laden. Spätestens da bekommst Du alle Einzelheiten.
Schöne Grüße
Oliver
-
B,
eine blosse Assembly (DLL-Lib) sollte auch im Studio ganz 'normal' per:
Object Browser - Objektkatalog
http://msdn.microsoft.com/de-de/library/exy1facf.aspx
sichtbar sein, inkl Namespaces.
Einfach im Projekt-Explorer/Baum unter den Verweisen die fragliche DLL doppelklicken
[Da muss man weder raten noch 'reflektieren']- Als Antwort markiert Bensen83 Mittwoch, 29. Dezember 2010 22:29