dll in andere dll einkompillieren

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    dll in andere dll einkompillieren

    yo Leute,

    ich hab in meiner Suche nicht wirklich was brauchbaren finden können. Folgende Situation:
    Ich habe eine dll mit Inherits DLLNAME (vererbt) in eine neue dll eingebunden und als Verweis gesetzt.

    Nun will ich aber, dass die eingebundene dll nicht mit ins Ausgabeverzeichnis kopiert wird.
    Es gibt ja die Möglichkeit den Verweis mit "Lokale Kopie" aus False zu setzen. Jedoch meckert dann die neue Anwendung wenn ich die neue dll verwenden möchte, dass er diese vererbte nicht findet.

    Gibt es hierzu eine Möglichkeit dass ich unterm Strich nur eine dll (nämlich nur die Neue) erhalte und auch auf dessen Funktionen zugreifen kann?

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Pack die Quellen aus der alten mit dazu oder installiere die alte DLL ordnungsgemäß mit Registrierung, dass sie gefunden wird.
    Ansonsten beide DLLs mitliefern.
    Was soll das übrigens mit DLL-Klasse ableiten?
    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!
    Naja es sieht so aus:
    Ich habe eine .Net-dll für VB6 geschrieben. Diese baut auch logischerweise auf VB6 auf.
    In dieser dll sind die Grundfunktionen vorhanden.
    Nun will ich aber teilweise die .Net "Sachen" auskosten und will dazu die Basisklasse einbinden per Inherits.
    Dazu will ich dann einfach nur 1 dll haben und wollte wissen ob das so möglich ist.
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Eine .NET-DLL und eine Nicht-.NET-DLL?
    Pack doch die abgeleitete DLL in die andere mit rein, da hast Du nur eine.
    Eine Basisklasse muss natürlich vorhanden sein, selbst wenn es nur eine Interface-DLL ist.
    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!
    Naja es ist so:
    Die dll ist .Net geschrieben, jedoch als COM da ich diese in einem VB6-Programm benötige. Somit sind teilweise Rückgabewerte von Funktionen, Events und so auf vb6 ausgelegt.
    Ich brauche diese dll aber auch für ein anderes Programm welches aber in .Net geschrieben ist. Und da möchte ich auf .Net Funktionen zurückgreifen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Was passiert denn, wenn Du diese DLL direkt in .NET einbindest? Sollte doch funktionieren.
    Ist halt nur ein wenig aufwändiger.
    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!
    Ja das würde natürlich gehen.
    Ich dachte einfach es wäre am Schönsten wenn ich eine eigene dll für die .Net Variante hätte welcher aber von der COM-dll erbt.
    Ich werde in dem .Net Projekt einfach eine Klasse hinzufügen und einen Verweis auf die COM-dll machen.

    Besten Dank :)

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Genial wäre es natürlich, wenn Du eine kombinierte .NET-COM-DLL hättest, da hättest Du dann beides drin. :thumbup:
    Ob und wenn ja wie das geht - kein Plan. :S
    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!
    Das funktioniert leider nicht.
    Es reicht wenn du eine Funktion mit Rückgabewert Long angibst.
    Willst du diese Funktion in vb6 verwenden kommt die Meldung:

    "Fehler beim Kompilieren.

    Funktion oder Schnittstelle kann nur eingeschränkt verwendet werden
    oder verwendet einen Typ der Automatisierung, der von Visual Basic
    nicht unterstützt wird"

    Es sei denn man verwendet diese Funktionen nicht (werden aber in IntelliSense leider mit angezeigt) dann kann man die dll verwenden :rolleyes:

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    @petaod:
    Gute Idee.
    @fichz:
    Probier dies (alles 2x machen, für Debug und Release):
    Konfigurationsmanager öffnen, neue Konfiguration => Neue Projektmappenkonfiguration
    Name => Debug2 / Release2 (oder wie Du halt willst
    Einstellungen kopieren von => Debug / Release
    schließen.
    Debug2 / Release2 auswählen
    Projekt -> Eigenschaften -> Kompilieren -> Erweiterte Kompilierungsoptionen...
    Benutzerdefinierte Konstanten
    einen sinnvollen Wert eintragen: z.B. MY_DOT_NET_VERSION
    und los gehts:

    VB.NET-Quellcode

    1. #If MY_DOT_NET_VERSION Then
    2. MessageBox.Show("MY_DOT_NET_VERSION")
    3. #Else
    4. MessageBox.Show("normale Version")
    5. #End If
    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!