使dotfuscator识别针对第三个程序集的不同版本构建的两个程序集引用同一个程序集?

时间:2017-08-01 15:24:57

标签: .net obfuscation dotfuscator

我们有一个包含程序集LibA和LibB的.Net应用程序AppA。

LibB也引用了LibA;它是在不久前构建的并放入我们的软件包存储库中,因此它是针对旧版本的LibA构建的,而不是直接包含在AppA中。没有一个库被强烈命名。

当我们运行AppA时,只使用最新版本的LibA; LibB对LibA的所有引用都很乐意使用最新版本而不是LibB构建的版本。

但是,当我们将这些程序集放在Dotfuscator中时,Dotfuscator会将来自LibB的对LibA的引用视为引用完全不同的程序集,然后将LibA传递给Dotfuscator。因此,在混淆的应用程序中,从LibB到LibA的引用不会更新以反映LibA的混淆,因此在运行时会失败。

解决方法是确保我们的所有程序集都与其他程序集的完全相同。这修复了混淆的应用程序,但它破坏了我们的包管理策略的目的,它应该允许我们的每个库按照自己的进度发展。我们开发的大量软件包很难扩展。

我在Dotfuscator中错过了一些开关或设置(我们使用商业版的4.8版本,但可以升级),这将使它仅通过名称解析程序集引用,就像.Net在运行时一样,所以混淆会按照我们期望的方式运作吗?

1 个答案:

答案 0 :(得分:2)

免责声明,我是Prefmptive Solutions的员工,Dotfuscator的开发人员。

今天发布的

版本4.33.0(2017年11月21日)包含针对此问题的修复程序。此外,Assembly Binding Redirection现在可用于更明确地说明要解决的程序集。