2016-02-25 3 views
0

Il ya quelque temps j'ai demandé à propos de "DLL caused an exception" when calling a method that references another DLL. À ce moment-là, je n'avais aucun indice mais maintenant je pense que ce qui peut causer le problème. Je suppose que j'ai un EXE appelant un DLL1 qui nécessite un DLL2. Quand je l'ai signé DLL1 avec un nom fort, pour une raison quelconque tous les appels vers DLL2 « s méthodes ont commencé à retourner l'erreur ci-dessous:C#: DLL de signature avec un nom fort (qu'en est-il de ses dépendances?)

System.Exception: Error while trying to call method X from DLL1. 
---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. 
---> System.IO.FileLoadException: Could not load file or assembly 'DLL2', Version=2.1.5899, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. 

Est-ce que cela signifie que je dois nommer fortement toutes les DLL le long de la chaîne de dépendance?

J'ai dû signer la première DLL parce que sinon j'obtiendrais un avertissement pendant regasm.

Répondre

2

Oui

Un assembly signé ne peut pas appeler un assembly non signé. Cela fait partie de la chaîne de confiance et cela signifie en effet que vous devrez signer toutes les dépendances de votre assembly signé.