2009-04-28 7 views
2

Ich versuche Strong Signing in meinen Projektassemblies einzuführen.Assembly Redirection funktioniert nicht wie erwartet

Mein Projekt Ausgabe wird in XML beibehalten und eine Art (vor der Unterzeichnung) erwähnt wird, wie:

typestr="XYZ.PQR, MyWidget, Version=1.0.2406.20198, Culture=neutral, PublicKeyToken=null" 

Nachdem alle Baugruppen mit öffentlichem Schlüssel signiert sind mit Token, 622edca63ee1770c. Ich habe <assembly> Block in meiner app.config-Datei wie folgt eingeführt:

<assemblyBinding> 
    <dependentAssembly> 
    <assemblyIdentity name="MyWidget" publicKeyToken="622edca63ee1770c" culture="neutral"/> 
    <bindingRedirect oldVersion="1.0.2406.20198" newVersion="0.1.27.10695"/> 
    </dependentAssembly> 
</assemblyBinding> 

Ich bin immer noch Fehler beim Abruf:

Could not load file or assembly 'EPGWidget, Version=1.0.2406.20198, Culture=neutral, PublicKeyToken=622edca63ee1770c' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Wenn ein Code Stück wie:

Type type = Type.GetType(typestr); 

folgenden wird ausgeführt. Es funktioniert jedoch für:

typestr="XYZ.PQR, MyWidget" 

Antwort

2

Wenn Sie als XML serialisieren, warum gibt es Informationen darin? Eines der Ziele von xml ist Entfernen Sie Typ Metadaten aus der Serialisierung. Ist das ein Array oder etwas? Möglicherweise gibt es bessere Möglichkeiten, diese Daten zu serialisieren.

Assembly Redirects nicht, AFAIK, arbeiten mit string-basierter Reflektion; Wenn der qualifizierte Name nicht übereinstimmt, stimmt er nicht überein. Im letzten Beispiel werden die Signierungsdetails nicht angegeben, sodass sie akzeptiert werden können.

Persönlich würde ich versuchen, das Problem der Typinformationen in der XML zu beheben - es ist wahrscheinlich eine leichtere und geeignetere Kampf zu kämpfen.

Verwandte Themen