C#:使用强名称对 DLL 进行签名(其依赖项呢?

本文关键字:依赖 强名称 DLL | 更新日期: 2023-09-27 18:36:08

不久前,我在调用引用另一个DLL的方法时询问了"DLL导致异常"。当时我没有线索,但现在我想是什么导致了这个问题。

假设我有一个EXE调用需要DLL2DLL1。当我使用强名称对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期间收到警告。

C#:使用强名称对 DLL 进行签名(其依赖项呢?

已签名的程序集

不能调用未签名的程序集。这是信任链的一部分,这确实意味着您必须对已签名程序集的所有依赖项进行签名。