2010-11-22 13 views
10

Ich verstehe die Grundidee beim Signieren von Assemblys, habe aber ein Problem bei der Verwendung von Telerik oder DLLs von Drittanbietern. Ich habe eine .exe, die 2 meiner eigenen .DLLs verwendet, die DLLs wiederum verwenden die Enterprise-Bibliothek-DLLs und Telerik-DLLs.Signieren von Assemblys mit einem starken Namen, ok, aber was passiert, wenn eine DLL eines Drittanbieters nicht signiert ist?

Ich gab allen meinen Projekten einen starken Namen .SNK, aber beim Kompilieren des Compilers erklärt, dass die Enterprise-Bibliothek-DLLs, zum Beispiel, nicht signiert sind, was Sinn macht.

Ich möchte nicht die Verifikation mit te Sn.exe -Vr Befehl deaktivieren oder sogar verzögern signieren meine Projekte. Aber wie wird das funktionieren? Ich bin dankbar für jede Einsicht.

Antwort

4

Es ist unbequem, aber keine Wissenschaft zu unterzeichnen/Dritte Baugruppen zurücktreten. Angenommen, Sie eine nicht signierte DLL wie System.ComponentModel.Composition.dll mit dem default.snk Schlüssel signieren möchten:

öffnen Sie die VS-Eingabeaufforderung und CD auf den Ordner mit dem unsigned DLL (s)

 
ildasm /all /out=System.ComponentModel.Composition.il System.ComponentModel.Composition.dll 
ilasm /dll /key=default.snk System.ComponentModel.Composition.il 
del System.ComponentModel.Composition.il 

Entfernen Sie in jedem anwendbaren VS-Projekt den Verweis auf Ihre signierte Assembly, und fügen Sie ihn zurück. System.ComponentModel.Composition.dll

+0

Wird eine Zeichnungsbaugruppe empfohlen, die über ein nugget-Paket installiert wird? – Vivekh

+0

Vergessen Sie '/ resource = somename.res' nicht, wenn die' .res' Datei von 'ildasm' erstellt wurde – n0rd