Question

Existe-t-il un moyen de référencer une bibliothèque sans nom fort? Lorsque j'ajoute une référence à l'assemblage dans les références et de reconstruire la solution, tout va bien, mais lorsque j'appelle la classe de cette solution d'assemblage, elle ne construit pas.

La sortie indique que l'assemblage référencé devrait avoir un nom fort. Quelle est la meilleure solution? La bibliothèque de dénomination forte n'est pas préférable.

Était-ce utile?

La solution

Je pense que le problème que vous avez ici est que l'assemblage que vous essayez d'ajouter la référence est signé avec un nom fort mais que l'assemblage que vous essayez de référence n'est pas signé. Une assemblée forte ne peut faire référence que d'autres assemblées fortes.

Soit signer l'assemblage que vous faites référence ou ne signez pas l'assemblage qui le fait référence.

La raison pour laquelle l'erreur n'apparaît que lorsque vous appelez réellement la classe est que le compilateur supprime la référence dans la sortie compilée s'il n'y a pas de code invoquant réellement l'assemblage référencé.

Si c'est le cas que vous vraiment ne peut pas Ajoutez un nom fort à celui qui est référencé, soit supprimer le nom fort de celui qui fait le référence (désolé longtemps), alors vous devrez envisager de lier la classe lors de l'exécution via la réflexion, puis d'y accéder via un base ou interface commune - pas du tout idéal; ou pire encore l'invoquer via la réflexion, ou dynamic.

Autres conseils

L'intérêt d'un nom fort est que vous savez quelles DLL sont chargés. Vous ne pouvez pas ajouter un nom fort à ton dll si vous référez quelque chose qui n'est pas fort, comme n'importe quoi pourrait être chargé à la place de la DLL à laquelle vous pensez (tant que le nom correspond). Cela bat entièrement les garanties qu'un nom fort est destiné à fournir.

Donc (un de):

  • N'ajoutez pas un nom fort à votre DLL (pour la plupart des choses internes, vous n'en avez pas besoin)
  • ou; reconstruire la DLL que vous faites référence avec un nom fort
  • ou; Chargez la DLL supplémentaire uniquement par réflexion (beurk)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top