wohin mit einer zentralen DLL

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von jan99.

    wohin mit einer zentralen DLL

    Moin!

    ich habe einige EXE'en zu erstellen die immer wieder dieselben Funktionen nutzen und diese möchte ich in eine DLL auslagern.

    Wo platziere ich diese DLL später am besten? Muss ja auch einen Verweis innerhalb der anderen Projekte legen.

    Erstelle ich ein eigenes Verzeichnis und setze darauf einen Windows-Suchpfad oder kopiere ich diese in den System32-Ordner?

    Eine Softwareverteilung oder ähnliches wird es nicht geben. Die EXE's bzw. DLL-Dateien werden manuell verteilt.

    Gruß Jan
    @jan99 Wenn die DLL aus Deinem Quellcode besteht, erstell für die Projekte Projektmappen, denen Du das DLL-Projekt hinzufügst.
    Den Verweis im Hauptprogramm machst Du dann auf das DLL-Projekt, nicht aber auf die DLL-Datei :!:
    Im ausgelieferten Projekt liegt dann die DLL immer neben der Exe, wo sie hingehört, ansonsten müsstest Du sie installieren und registrieren, aber das willst Du nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    ich suche den Weg wie ich nun die DLL zu meiner Projektmappe hinzufügen kann - in VS2013.

    Irgendwie sehen die Beschreibungen im Web (youtube) alle anders aus.

    Bisher bin ich bei rechter Maustaste auf den Projektnamen. Dann würde ich auf Hinzufügen tippen - aber dann Verweis oder Dienstverweis??

    Gruß Jan
    Moin !

    Das kann man aber auch durch Ausprobieren herausfinden.


    Sicherlich - aber da ich mir unsicher bin ob es zu Wechselwirkungen kommt bzw. in einigen Tagen etwas nicht mehr funktionert habe ich lieber nochmal nachgefragt.

    Habe nun auf die DLL der einzubindenden Datei in dessen Entwicklungsverzeichnis verwiesen. Jetzt wird diese DLL aber in den "allgemeinen" Verweisen der Projektressource verwiesen.

    Wenn ich später meine EXE ausführe - wird dann nicht versucht wieder im Entwicklungsverzeichnis der DLL diese zu finden. Dabei liegt diese dann in demselben Verzeichnis wie die EXE!?!?

    Was mich aber stutzig mach?!?!

    Gruß Jan
    @jan99 Datei -> Hinzufügen -> Vorhandenes Projekt:

    Die DLL liegt dann im selben Verzeichnis wie die Exe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    hi !

    thanks - da war ich völlig falsch!!!!

    Dann sieht das später so aus:

    (siehe Anhang)

    Korrekt ? - Schönes Wochenende !!!

    Gruß Jan
    Bilder
    • projekteinbindung.png

      17,04 kB, 398×356, 96 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jan99“ ()

    jan99 schrieb:

    Korrekt ?
    Jou.
    Und dieses Projekt dem Hauptprogramm nun als Verweis hinzufügen:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin !

    danke erst einmal wieder...

    Und jetzt den Verweis auf die DLL im anderen Projekt

    1.) X:\VB_NET_2015\Projects\tappenbeckja\EBL.Tools\EBL.Tools\bin\Debug

    oder
    2.) dort wo ich diese später ablegen will (vorher einmal kompeliert) ?

    Vermutlich aber 1.) !

    Ich erweitere das Posting. Nachdem ich die EBL.Tools einmal kompelliert habe steht die DLL auch zur Verfügung an dem o.g. Ort. In dem Source kann ich jetzt auch die aufgerufenen Namen auch vervollständigen. Also muss mein Source die Funktionen auch finden die dieser einbinden soll.

    Wenn ich nun aber mein Programm starten will, dann bekomme ich folgende Meldung:

    FileNotFoundException wurde nicht behandelt.
    Ein Ausnahmefehler des Typs "System.IO.FileNotFoundException" ist in mscorlib.dll aufgetreten.

    Zusätzliche Informationen: Die Datei oder Assembly "EBL.Tools, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

    Zusätzlich kommt der Dialog aus dem Anhang - den ich bisher nie gesehen habe.

    Was kann ich noch übersehen haben ?

    Gruß Jan

    PS: bei dem Verweis habe ich die lokale Kopie auf FALSE gesetzt !
    Bilder
    • dll-fehlermeldung.png

      18,1 kB, 687×493, 85 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „jan99“ ()

    jan99 schrieb:

    im anderen Projekt
    Dieselbe Aussage.
    Die Quellen werden dem Projekt als solche hinzugefügt. Da kann es sein, dass dieselben Quellen in mehreren Projekten hinzugefügt werden.
    Das geht so lange gut, bis disjunkte Änderungen erforderlich sind, da musst Du Dir mehrere ähnliche Projekte halten oder mit Compilerschaltern arbeiten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    woher hast Du mein Zitat kopiert - finde die Stelle nicht wieder.

    Derzeit arbeitet ich ja nur mit einem Projekt das auf die Funktions-DLL (EBL.Tools) zugreift. Aber schon das bekomme ich ja nicht zum laufen wegen o.g. Fehlermeldung!

    Gruß Jan
    @jan99 Post #9, Zeile 3.

    jan99 schrieb:

    Fehlermeldung
    Was für eine?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    oh - hatte vergessen das Zitat zu kennzeichnen.

    FileNotFoundException wurde nicht behandelt.
    Ein Ausnahmefehler des Typs "System.IO.FileNotFoundException" ist in mscorlib.dll aufgetreten.

    Zusätzliche Informationen: Die Datei oder Assembly "EBL.Tools, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.



    ... dazu war dann noch das Bild angehängt!

    Gruß Jan
    @jan99 Hast Du dasd DLL-Projekt dem Haupt-Projekt als Verweis hinzugefügt?
    Gek mal in Erstellen -> Konfigurationsmanager, da muss die korrekte Konfiguration angezeigt werden und bei Erstellen ein Haken sein.
    Ggf. musst Du Dein Projekt auf x86 oder x64 umstellen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    meinst Du den Einstrag im Konfigurationsmanager - siehe Anhang?

    ...Erstellen ein Haken sein.


    Wenn ich da richtig bin, dann weiß ich nicht wo der Haken sein soll ?

    Ggf. musst Du Dein Projekt auf x86 oder x64 umstellen.


    Mit meinem Verständnis braucht das nicht der Fall sein, da ich auf derselben Maschine beides habe und bewußt keine Umstellung 86/64 vorgenommen habe.

    Gruß Jan
    Bilder
    • vb_konfigmanager.png

      34,73 kB, 1.215×338, 81 mal angesehen
    @jan99 Nein, meine ich nicht.
    Klar musst Du ne lokale Kopie verwenden, wenn Du beide Projekte in einer gemeinsamen Projektmappe hast.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    also habe ich jetzt erst einmal den Haken gesetzt auf den Projektresourcen und der Konfigurationsmanager sieht genauso aus.

    Siehe Anhang.

    Jetzt startet es zumindest schon einmal - zumindest bis zum nächsten Fehler.... aber den muss ich jetzt suchen.

    Eine abschließende Frage aber noch.

    Wird jetzt mit dem Haken "Kopie erstellen" auch die DLL mit in die EXE eingebunden und somit auch mit der EXE kopiert und sind die DLL und die EXE immer noch physikalisch getrennt ?

    Gruß Jan
    Bilder
    • konfigmanager.jpg

      64,95 kB, 805×280, 83 mal angesehen
    • konfigmanager1.jpg

      40,58 kB, 717×194, 72 mal angesehen
    @jan99 EXE und DLL bleiben zeit Lebens physisch getrennt, sie liegen jedoch im selben Verzeichnis.
    Welcher nächste Fehler?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!