Zwei verschiedene Montage-Versionen "Die befindet assembly manifest definition entspricht nicht den Assemblyverweis"
Habe ich ein Projekt, dass ich auf Arbeit bin, das erfordert die Verwendung der Mysql-Connector für NHibernate, (Mysql.Data.dll). Ich möchte auch Bezug auf ein anderes Projekt (Migrator.NET) im selben Projekt. Das problem ist auch wenn Migrator.NET gebaut wird mit der Referenz zu MySql.Daten mit bestimmten version = false, es immer noch versucht Verweis auf die ältere version von MySql.Daten, die Bibliothek wurde gebaut, anstatt einfach die version, die gibt es.. und ich bekomme die Ausnahme gemäss dem Titel:
----> System.IO.FileLoadException : Konnte nicht geladen, Datei oder assembly
'MySql.Daten, Version=1.0.10.1,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d' oder
eine seiner Abhängigkeiten. Das liegt
assembly manifest definition ist
nicht mit den Assemblyverweis überein.
(Ausnahme von HRESULT: 0x80131040)
Die version, die ich bin Referenzierung in der Haupt-Versammlung ist 6.1.3.0. Wie bekomme ich die beiden Baugruppen zu kooperieren?
Edit:
Für diejenigen von Euch, die Angabe der Assembly Binding Redirection, habe ich diese eingerichtet:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.1.3.0" newVersion="6.1.3.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Ich bin Referenzierung dies der Haupt-Versammlung in einem anderen Projekt, und immer noch die gleichen Fehler. Wenn ich mit meinem main assembly kopiert wird lokal verwendet werden, in der anderen Baugruppe, wird es mit den Einstellungen in der app.config oder muss diese Informationen enthalten sein müssen, mit jeder Anwendung oder Montage, das Verweise auf mein Haupt Versammlung?
InformationsquelleAutor snicker | 2010-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist eine ziemlich grobe version mismatch. bindingRedirect ist nicht zu helfen, wenn die Versionen unterscheiden sich so sehr. Du hast es falsch btw, würden Sie wollen newVersion übereinstimmen, die gefunden wurde. Aber nicht dorthin gehen.
Blick auf die Migrator.NET download, ich glaube, ich sehe das problem. Der lib-Ordner enthält eine wirklich alte version von MySql.Data.dll es wurde gemacht, um zu laufen .NET 1.0. Starten Sie durch zappen und versuchen, neu erstellen, mit der version 6 der assembly. Viel Glück, ich denke du wirst es brauchen.
Dies ist, was ich zu tun hatte. Konnte nicht erhalten assembly binding redirection zu arbeiten. Kreuzung meine Finger.
Ich Schätze, dass ich nie befolgt.. ich Tat dies, und es war in Ordnung arbeiten.
InformationsquelleAutor Hans Passant
Du suchst Assembly Binding Redirection.
Dieser ermöglicht das konfigurieren einer Anwendung zu suchen, eine andere assembly-version.
Was ist die PublicKeyToken der neueren Montage?
c5687fc88969c44d
Haben Sie die erforderlichen Berechtigungen, wie beschrieben: msdn.microsoft.com/en-us/library/c745b34k.aspx ?
InformationsquelleAutor Oded
In Fall müssen Sie beide Versionen der assembly eine Möglichkeit wäre, verwenden Sie Sie nebeneinander, und konfigurieren Sie einfach die Anwendung, suchen Sie in der richtigen Stelle. Sie können dies tun, indem Sie einige Zeilen in der app.config, aber für mich der sicherste Weg war immer registrieren, um die
AppDomain.AssemblyResolve
Veranstaltung und stellen Sie den Pfad für die Bibliothek, die benötigt wird.Für ein einfaches Beispiel, können Sie einen Blick hier (eine Antwort für einen nicht-sehr Verwandte Frage, aber mit der gleichen Technik ;))
InformationsquelleAutor Tomas Vana
Die einfache Lösung ist, entfernen Sie die Mysql.data.dll (die Referenz zu alten MySql-version) Verweis aus dem Migrator.NET Projekt und fügen Sie eine neue Referenz MySql.data.dll (die gleiche version von einem anderen Projekt verwendet). Bauen Migrator.NET wieder und jetzt sollte alles funktionieren. Ich Stand vor dem gleichen Problem und die Lösung, die ich erwähnt funktionierte perfekt für mich
InformationsquelleAutor Pankaj
War ich auch vor dem gleichen Problem, und nicht in der Lage war zu lösen, indem Sie irgendwelche der oben genannten Lösung.
Schließlich fand ich noch eine Lösung für dieses...
Entfernen Sie alles aus der Lizenz.licx-Datei im Projekt=>Eigenschaften im Projektmappen-explorer.
Wenn ich entfernte alles, was aus dieser Datei, Ihr erlaubt mir, erstellen Sie das Projekt erfolgreich
InformationsquelleAutor Vijay Sutaria