C#:使用强名称签署 DLL(它的依赖项如何?)
C#: Signing DLL with strong name (what about its dependencies?)
前段时间我问过"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
期间收到警告。
是
已签名的程序集无法调用未签名的程序集。这是信任链的一部分,它确实意味着您必须签署已签名程序集的所有依赖项。
前段时间我问过"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
期间收到警告。
是
已签名的程序集无法调用未签名的程序集。这是信任链的一部分,它确实意味着您必须签署已签名程序集的所有依赖项。