DLL's benutzen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von NscMike.

    DLL's benutzen

    Hallo Community,
    Hat jemand eine Idee wie man die DLL's beim Start der Anwendung ins Systemverzeichnis kopiert, damit sie nicht im Anwendungsordner erscheinen?
    Oder gibt es vielleicht eine Möglichkeit wie man das anders löst? Dll's in ressourcen?

    Grüße
    Cyberkey
    Da kann ich nur auf den assemblyCompressor von - glaube ich - Maximilian Krause verweisen... google einfach mal danach.
    Allerdings ist das Einbinden in das Hauptprogramm nicht bei jeder DLL erlaubt.

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

    Danke für die schnellen Antworten.
    Leider weiß ich nicht genau wie ich das benutzen kann.

    Habe z.B. Bassmod eingebunden, im Verweis steht es und die Bassmod.dll habe ich einfach ins Projekt gezogen. Wenn ich das jetzt ausführe und es liegen beide Dateien im Verzeichnis dann funktioniert es. Wenn ich das Projekt (EXE) in das Tool lade und dann hinzufügen drücke und die beiden (DLL's) hinzufüge und dann erzeugen drücke ... Funktioniert das Projekt leider nichtmehr, hat jemand eine Idee?

    Fehler:

    Quellcode

    1. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Das System kann die angegebene Datei nicht finden.
    2. File name: 'Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50xxx'
    3. at System.Reflection.Assembly._nGetEntryPoint()
    4. at System.Reflection.Assembly.get_EntryPoint()
    5. at assemblyCompressor.Core.subSystem.applicationContext.executeApplication()
    6. WRN: Assembly binding logging is turned OFF.
    7. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
    8. Note: There is some performance penalty associated with assembly bind failure logging.
    9. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].


    Gruß
    Cyberkey
    Ich will ja jetzt keine Eigenwerbung betreiben aber..
    [VB 2008] DLLs in Resourcen einbinden & Verweis darauf
    --- Zurzeit inaktiv ---
    ICh würde die DLLs nicht ins Systemverzeichnis kopieren, sondern sie in das Verzeichnung Deiner Anwendung legen.
    Es sei denn, noch einige andere Anwendungen benötigen sie ebenfalls. Und auch dann würde ich sie nur ins Systemverzeichnis kopieren, wenn das mehr als 4 weitere Anwendungen sind.
    .NET.DLLs sind registriert und ein Teil des Pfadnamens ist die Versionsnummer. Lege sie neben die Anwendung.
    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!
    @ Cyberkey

    Ist beim Verweis lokale Kopie auf True? Und wenn ja befindet sich dann auch wirklich eine Kopie der Assembly in dem Ordner aus dem heraus Du die Exe ausführen lässt?

    Wenn nein, wo befindet sich die Dll dann und wie ist die Pfadangabe im Verweis?

    Zugriffe auf Dll's die sich in einem anderen Ordner als die zugreifende Assembly befinden ist fast nur über den GAC oder über die Registry (bei COM-Dll's) möglich.

    @ RoadFromGermany


    ... NET.DLLs sind registriert und ein Teil des Pfadnamens ist die Versionsnummer


    Nicht automatisch, gerade bei Drittkomponenten die man sich von irgendwo runterlädt und dann in sein Projekt einbindet sind eigentlich nie registriert.

    Gruß

    Rainer