我正在开发一个 C# .NET 程序集(名称:A.exe),它需要延迟签名,然后由第三方公司完全签名。为了延迟签名,我使用公钥。程序集 A 引用程序集 B.Core.dll、B.Common.dll、B.Logging.dll,它们是公共库的一部分。B 程序集没有延迟签名,所以我使用 ildasm/ilasm 对它们进行反汇编并重新组装延迟签名。我提交了 A.exe 和 B.Core.dll、B.Common.dll、B.Logging.dll,它们现在已完全签名,但是当 A 启动时它抱怨错误:
无法加载文件或程序集 'Assembly B1 PublicKeyToken= null'
这个问题不应该与 A.exe 相关,因为它引用了延迟签名的程序集(它们的 Strong Name 属性设置为 True),但我怀疑罪魁祸首是 B.Core。
事实上,B.Core 引用了 B.Common 和 B.Logging,而 B.Common 和 B.Logging 是相互独立的。
错误的原因可能是 B.Core 最初是使用未签名的 B.Common 程序集构建的,然后对所有三个程序集进行反汇编和重新组装并没有更改引用...为了解决问题,我是想做的是将所有四个程序集合并为一个延迟签名程序集,作为 A 的后期构建步骤。你认为它会工作吗?
要记住的一件事是 B.Core 使用 .NET MEF 动态加载从 A 导出的接口。这个过程会出现任何问题吗?
在此先感谢您的帮助