2017-06-21 2 views
0

Ich weiß, dass es mehrere ähnliche Themen zu SO zu diesem Problem gibt (glaube mir, ich habe die letzten zwei Tage all diese gelesen), aber keiner von ihnen half in meiner seltsamen Situation .
Also komme ich hierher, vielleicht kann mich jemand aufklären, was das Problem sein könnte.Konnte Datei oder Assembly oder eine seiner Abhängigkeiten nicht laden. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein

Wir haben eine Quelle eines C# (WPF) -Steuerelements, TreeListView.
Es ist mit VS2015 dev Eingabeaufforderung csc.exe kompiliert mit den folgenden Parametern (Teil des größeren Projekts wird IDE nicht für die Kompilierung verwendet):

/reference:"System.Xaml.dll" 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationCore.dll" 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsBase.dll" 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsFormsIntegration.dll" 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationFramework.dll" 
/nowarn:1701,1702 /errorreport:prompt /warn:4 /platform:x86 /define:DEBUG;TRACE /debug+ /debug:full /optimize- /target:library /out:..\debug\TreeListView.dll 

...here all the .cs source files are listed... 

/resource:"..\TreeListView\obj\debug\TreeListView.g.resources" 

Alle unsere C#/WPF-DLL mit der kompilierte die gleichen Optionen in der Befehlszeile.

Es kompiliert gut, ich habe die TreeListView.dll. Es ist nicht stark benannt.
Es befindet sich neben dem mainApp.exe kopiert, und wenn ich die Haupt-App laufen und versuchen, ein Fenster mit diesem TreeListView zu verwenden, ich habe Ausnahme

*** Exception ***: System.IO.FileLoadException 
Message: Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
Source: mscorlib 

Die main_app zusammengestellt auch mit csc.exe, Referenzierung genau die Ausgabe des oben TreeListView.dll zusammengestellt

Btw, weiß nicht, warum es den öffentlichen Schlüssel angezeigt wird, wenn es nicht stark ist benannt

sn -T debug\TreeListView.dll 

Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.0 
Copyright (c) Microsoft Corporation. All rights reserved. 

debug\TreeListView.dll does not represent a strongly named assembly 

Andere Beobachtung

In VS2015 IDE, habe ich eine neue WPF-Anwendung erstellt und referenziert die oben zusammengestellt TreeListView.dll - und verwendet, um die Steuerung in der XAML: es zeigt sofort in der GUI XAML Designer, die Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies. The system cannot find the file specified.
(Anmerkung , hier ist der Fehler The system cannot find the file specified.)

enter image description here

I IDE thougth weitere Informationen geben, aber nichts neues.

Weitere Informationen: Diese ganze build/laufen Prozess mit VS2008 fein gearbeitet (NET3.5), jetzt nach dem VS2015 (.NET4) bewegen, updaexperiencing dies, und nur mit diesem TreeControl.dll

Ich habe alle Referenzen dieser DLL, verwendetes Framework, mit ILSpy, ildasm, ProcessMonitor für die Datei nicht gefunden usw. überprüft, konnte aber nichts Nützliches finden.

ildasm> Manifest der TreeControl.dll - das sieht auch

// Metadata version: v4.0.30319 
.assembly extern mscorlib 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)       // .z\V.4.. 
    .ver 4:0:0:0 
} 
.assembly extern PresentationFramework 
{ 
    .publickeytoken = (31 BF 38 56 AD 36 4E 35)       // 1.8V.6N5 
    .ver 4:0:0:0 
} 
.assembly extern System.Xaml 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)       // .z\V.4.. 
    .ver 4:0:0:0 
} 
.assembly extern WindowsBase 
{ 
    .publickeytoken = (31 BF 38 56 AD 36 4E 35)       // 1.8V.6N5 
    .ver 4:0:0:0 
} 
.assembly extern PresentationCore 
{ 
    .publickeytoken = (31 BF 38 56 AD 36 4E 35)       // 1.8V.6N5 
    .ver 4:0:0:0 
} 
.assembly extern System 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)       // .z\V.4.. 
    .ver 4:0:0:0 
} 
.assembly extern System.Core 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)       // .z\V.4.. 
    .ver 4:0:0:0 
} 

Jede Idee, mir ok, was wirklich zu schätzen überprüfen würde.

Antwort

1

Verwenden Sie Fuslogvw für fehlgeschlagene Bindung zur Laufzeit. Zu dem Zeitpunkt, an dem Sie die Einstellungen für die Anwendungsgruppe auf "Fehler bei der Protokollierung der Verbindung zur Festplatte protokollieren" ausführen.

Alle fehlgeschlagenen Bindungen werden im Fenster protokolliert.Sie können auf die Protokolle doppelklicken, um vollständige Details darüber zu erhalten, welche DLL versucht, die TreeListView-Assembly zu laden, und nach welchen Stellen sie diese DLL suchen soll.

+0

Vielen Dank! Dieses Tool half mir, Fehler war: 'WRN: Vergleich der Assemblyname führte zu der Mismatch: PUBLIC KEY TOKEN ' Es war schon seltsam für mich, dass die Ausnahme enthielt:" PublicKeyToken = ffedd4b1334b06f5 ", wenn die Binärdatei war kein starker Name , siehe oben. Die Textsuche in der Binärdatei zeigte jedoch, dass sie "PublicKeyToken = ffedd4b1334b06f5" enthielt. Ich habe festgestellt, dass eine Binärdatei, die während der csc.exe-Kompilierung verwendet wird (TreeListView.g.resources - diese Binärdatei wird von der IDE generiert) diesen Schlüssel enthält. – Zotyi

+0

** ... continue ... ** In IDE, TreeListView-Projekt geladen, dann "sign assembly" deaktiviert und neu erstellt, um TreeListView.g.resources neu zu generieren. Dieser enthielt keinen öffentlichen Schlüssel, der mit der Dateisuche überprüft wurde. Dann die TreeListView.dll mit csc.exe neu kompiliert (jetzt mit der neuen TreeListView.g.resources), und es funktioniert! Kurz gesagt, wenn TreeListView.g.resources erzeugt wurde, war es mit der Option "sign assembly", aber die endgültige TreeListView.dll wurde nicht stark benannt, aber teilweise noch irgendwie wurde es signiert, aber "unsichtbar" - jedoch verursachte Ausnahme . – Zotyi

Verwandte Themen