签名应用程序如何使用未签名的程序集(可以在客户站点重新生成)

我需要对C#.net可执行文件进行签名,以便使用其他程序集中提供密码访问权限的方法之一。

同一个可执行文件需要引用和使用未签名的程序集。 它没有签名的原因是我们为客户提供了一种在现场重新生成它的方法(它包含了对应用程序中建模自定义的访问权限)。

单个可执行文件是否可以使用有符号和无符号程序集?

您无法从已签名的程序集引用未签名的程序集,但您可以使用Assembly.Load方法之一轻松地加载一个。

通常,您在签名程序集中提供接口(或者您喜欢的基类),并在整个代码中使用它来在编译时获取信息。 客户的未签名程序集(插件)在一些特殊标记的类上实现该接口。 比您的应用程序加载程序集(从默认位置通过Load ,或从指定文件通过LoadFile ),查找并构造类,而不是使用它来在运行时获取信息。

注意:您还可以查看“如何在C#/ .Net中实现插件”方法的问题。

我相信使用无符号程序集的唯一方法是使用reflection在运行时加载它。

如果引用的内容不是强名称,则无法为可执行文件添加强名称。