Question

Je fais un système de Addin où les charges principales applications et assemblages Addin1.dll Addin2.dll sur l'exécution dans les nouvelles de AppDomain.

Toutefois, dans le cas où Addin1.dll est signé (nom fort) avec ma clé et Addin2.dll est pas, je veux être en mesure de ne charger que Addin1.dll et rejeter Addin2.dll.

Je soupçonnant qu'il doit être fait en définissant certains paramètres AppDomainSetup?

Était-ce utile?

La solution

Regardez dans la méthode Assembly.Load qui prend un paramètre de preuve. Vous pouvez trouver un exemple de la façon de créer une preuve de votre clé publique ici .

Autres conseils

Vous pouvez implment une DomainManager et la base de votre décision de charge / bloc est sur ce que vous voulez. Je répondu à une question quelque peu lié ici.

Vous pouvez utiliser méthode de charge de la classe AppDomain pour charger un nouveau montage dans appdomain, à condition politique de l'éditeur de l'Assemblée est satisfaite par l'environnement client ou l'utilisateur final.

En outre la forte assembly nommé suit toutes les règles établies par l'éditeur de l'assemblage et le CLR. Ainsi, l'utilisateur de l'assemblage doit satisfaire l'aspect de la sécurité de l'ensemble étant chargé dans le appdomain.

Le CLR charge l'assembly global référencé à partir du GAC en utilisant les propriétés de nom fort. Si l'ensemble référencé est disponible dans le GAC, CLR retourne son contenant sous-répertoire et le fichier contenant le manifeste est chargé. Trouver l'ensemble de cette façon assure l'appelant que l'ensemble chargé lors de l'exécution est venu du même éditeur qui a construit l'ensemble du code a été compilé. Maintenant comparaison de jeton de clé publique dans la table de montage de référencement assemblyRef et jeton de clé publique dans la table AssemblyDef de l'ensemble référencé. Si l'ensemble référencé n'est pas dans le GAC, le CLR regarde dans le répertoire de base de l'application, puis dans les chemins privés identifiés dans le fichier de configuration de l'application; si l'application contenant l'ensemble est installé à l'aide du MSI, puis CLR appelle MSI pour charger l'assemblage requis. Si l'ensemble ne se trouve dans aucun de ces emplacements, une exception est levée et, enfin, la liaison de l'ensemble échoue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top