Frage

Ich mache ein AddIn System, in dem die wichtigsten app Lasten Baugruppen Addin1.dll und Addin2.dll zur Laufzeit in neuen AppDomain Jahren.

Doch in dem Fall, dass Addin1.dll signiert ist (starken Name) mit meinem Schlüssel und Addin2.dll ist nicht, möchte ich in der Lage sein, nur Addin1.dll zu laden und lehnt Addin2.dll.

Ich bin Verdacht besteht, dass es durch das Setzen einiger Parameter in AppDomainSetup getan werden muss?

War es hilfreich?

Lösung

Schauen Sie in die Assembly.Load Methode, die einen Evidence Parameter annimmt. Sie können ein Beispiel finden, wie ein Beweis von Ihrem öffentlichen Schlüssel zu erstellen: hier .

Andere Tipps

Sie können eine DomainManager implment und stützen Sie Ihre Last / Block Entscheidung ist auf was auch immer Sie mögen. Ich antwortete eine etwas damit verbundene Frage hier.

Sie können mit Load-Methode der AppDomain-Klasse neue Assembly laden in Appdomain, sofern der verlags~~POS=TRUNC der Montage durch den Kunden oder End-User-Umgebung erfüllt ist.

Auch die starke benannte Anordnung folgt alle Regeln durch Herausgeber der Montage und der CLR festgelegt. So dass der Benutzer der Anordnung des Sicherheitsaspekt der Anordnung erfüllen muss in das Appdomain geladen werden.

Die CLR lädt die referenzierten globale Assembly aus dem GAC der starken Namen Eigenschaften verwenden. Wenn die referenzierte Assembly in dem GAC verfügbar ist, wird CLR die darin enthaltenen Unterverzeichnis zurückkehren und die Datei das Manifest hält, wird geladen. Das Finden der Montage auf diese Weise der Anrufer, die gegen die Anordnung zur Laufzeit geladen kam aus dem gleichen Verlag, die die Montage der Code gebaut wurde zusammengestellt zusichert. Nun Vergleich von Public-Key-Token in der AssemblyRef Tabelle der Referenzierung Montage und Public-Key-Token in dem AssemblyDef Tabelle des referenzierte Assembly. Wenn die referenzierte Assembly nicht im GAC ist, sucht die CLR in dem Basisverzeichnis der Anwendung und dann in den privaten in der Konfiguration der Anwendung Datei identifiziert Pfaden; wenn die Anwendung der Baugruppe mit dem MSI installiert ist, verwendet wird, dann ruft CLR MSI die erforderliche Anordnung zu laden. Wenn die Assembly nicht in irgendeinem dieser Stelle gefunden wird, wird eine Ausnahme ausgelöst und schließlich der Montage die Bindung versagt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top