C#:用强名称签名DLL(它的依赖项是什么?)

时间:2016-02-25 15:11:05

标签: c# visual-studio dll assembly-signing

前段时间我问过"DLL caused an exception" when calling a method that references another DLL。那时我没有线索,但现在我认为可能导致问题的原因。

假设我EXE拨打DLL1,需要DLL2。当我使用强名称对DLL1进行签名时,出于某种原因,所有对DLL2方法的调用都会开始返回以下错误:

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.

这是否意味着我必须强烈命名依赖链中的每个DLL?

我必须签署第一个DLL,否则我会在regasm期间收到警告。

1 个答案:

答案 0 :(得分:2)

签名的程序集无法调用未签名的程序集。这是信任链的一部分,它确实意味着您必须签署已签名程序集的所有依赖项。