Probleme mit Bibliothekenverweise

  • VB.NET

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

    Probleme mit Bibliothekenverweise

    Hallo,

    ich habe in mein Hauptprogramm eine MySQL.Data version 6.3.6.0 eingebunden.
    Diese wollte ich einfach ersetzen durch die neueste Version 6.9.8.0

    Leider kommt jetzt folgender Fehler

    === Zustandsinformationen vor Bindung ===
    LOG: DisplayName = MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
    (Fully-specified)
    LOG: Appbase = file:///C:/Projekte/VishayVB/S000380/Visualisierung/Project_VBVisu/bin/Debug/
    LOG: Ursprünglicher PrivatePath = NULL
    Aufruf von Assembly : SecsGemLib, Version=1.67.0.0, Culture=neutral, PublicKeyToken=null.
    ===
    LOG: Diese Bindung startet im default-Load-Kontext.
    LOG: Die Anwendungskonfigurationsdatei wird verwendet: C:\Projekte\VishayVB\S000380\Visualisierung\Project_VBVisu\bin\Debug\BATCHSPRAY.vshost.exe.Config
    LOG: Die Hostkonfigurationsdatei wird verwendet:
    LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config wird verwendet.
    LOG: In der Anwendungskonfigurationsdatei wurde eine Umleitung gefunden. 6.3.6.0 wird nach 6.3.6.0 umgeleitet.
    LOG: Verweis nach der Richtlinie: MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
    LOG: Download von neuem URL file:///C:/Projekte/VishayVB/S000380/Visualisierung/Project_VBVisu/bin/Debug/MySql.Data.DLL.
    WRN: Der Vergleich des Assemblynamens führte zum Konflikt: Nebenversion.
    ERR: Das Setup der Assembly konnte nicht abgeschlossen werden (hr = 0x80131040). Die Suche wurde beendet.
    </ExceptionString></Exception></TraceRecord>
    Das Programm "[8144] BATCHSPRAY.vshost.exe: Program Trace" wurde mit Code 0 (0x0) beendet.
    Das Programm "[8144] BATCHSPRAY.vshost.exe" wurde mit Code -1 (0xffffffff) beendet.


    Eigentlich hätte ich mir gedacht ich kann die Bibliothek einfach austauschen

    signItUp1 schrieb:

    compalieren
    Neue DLL - neue Versionsnummer?
    In der Verweis-Info steht auch die Version der ursprünglich eingebundenen DLL. Wenn die nicht stimmt, läuft es 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!

    signItUp1 schrieb:

    comilieren
    Ja.
    Schreib mal genau auf, was für DLLs Du hast und wie die compiliert sind (x86, x64, AnyCPU).
    =====================
    Definiere

    signItUp1 schrieb:

    versionsunabhängig
    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!
    Also ich habe zwei Libs in Mein Hauptprogramm eingebunden
    MySQL Data und SecsGemLib (eigene Lib)

    SecsGemLib kann ich austauschen ohne das Hauptprogramm neu zu kompilieren
    Bei MySQL Data geht das nicht

    Quellcode

    1. <ItemGroup>
    2. <Reference Include="MySql.Data">
    3. <HintPath>C:\ControllerData\MySql.Data.dll</HintPath>
    4. </Reference>
    5. <Reference Include="SecsGemLib">
    6. <HintPath>C:\ControllerData\SecsGemLib.dll</HintPath>
    7. </Reference>
    8. [b][/b]


    Hauptprogramm ist AnyCPU
    SecsGemLib ist AnyCPU
    MySQL.Data.dll ?

    Hauptprogramm:

    Quellcode

    1. Imports SecsGemLib
    2. Imports MySql.Data.MySqlClient
    3. Public Class Form1
    4. Private mydbConnection As MySqlConnection
    5. Private objSecsGem as SecsGemLib.SecsGemLibrary
    6. Public sub New
    7. ' Dieser Aufruf ist für den Designer erforderlich.
    8. InitializeComponent()
    9. try
    10. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    11. Dim ServerAddress As String = "localhost;"
    12. Dim UserName As String = "root;"
    13. Dim UserPassword As String = "asas;"
    14. Dim Database As String = "s000380;"
    15. mydbConnection = New MySqlConnection()
    16. mydbConnection.ConnectionString = " server=" & ServerAddress & " user id=" & UserName & " password=" & UserPassword & " database=" & Database
    17. mydbConnection.Open()
    18. objSecsGem = new SecsGemLibrary("c:\controllerdata\Mappings.xml")
    19. Catch ex As Exception
    20. MsgBox("err " & ex.Message )
    21. End Try
    22. End Sub
    23. End Class

    signItUp1 schrieb:

    SecsGemLib kann ich austauschen ohne das Hauptprogramm neu zu kompilieren
    Da hast Du den Verweis schon mal falsch gesetzt.
    Wenn SecsGemLib Deine eigene DLL ist, füge der Projektmappe des Hauptprogramms das DLL-Projekt für SecsGemLib als Projekt hinzu und setze den Verweis auf das Projekt, nicht aber auf die DLL :!: :!: :!:
    So kannst Du in dieser Deiner DLL nach Herzenslust debuggen und den Code ändern und zwischen x86, x64 und AnyCPU hin- und her schalten.
    =====
    Probiere mal das Umschalten zwischen x86 und x64. Welche Konfiguration läuft, welche bringt bereits bei der Erstellung 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!