2017-08-01 47 views
1

我们有一个包含程序集LibA和LibB的.Net应用程序AppA。让dotfuscator识别两个针对不同版本的第三个程序集构建的程序集是否引用相同的程序集?

LibB也引用LibA;它是在不久前建立的,并且放在我们的软件包仓库中,所以它是针对LibA的旧版本而不是直接包含在AppA中的。这些图书馆都没有强有力的命名。

当我们像构建一样运行AppA时,只使用最新版本的LibA; LibB所有对LibA的引用都很乐意使用最新版本,而不是LibB构建的版本。但是,当我们将这些程序集放到Dotfuscator中时,Dotfuscator会将来自LibB的对LibA的引用视为引用完全不同的程序集,然后将我们传递到Dotfuscator的LibA引用。因此,在混淆的应用程序中,从LibB到LibA的引用不会更新以反映LibA的混淆,因此在运行时会失败。

解决方法是确保我们所有的组件都是与我们其他组件的完全相同的版本构建的。这样可以修复混淆的应用程序,但这种做法有损我们软件包管理策略的目的,我们的软件包管理策略旨在让我们的每个图书馆能够按照自己的步调发展。我们开发的大量包裹很难进行扩展。

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

回答

2

声明,我是PreEmptive Solutions的一名员工,Dotfuscator的开发人员。

版本4.33.0今天发布(11/20/2017)包含此问题的修复程序。此外,现在可以使用Assembly Binding Redirection更清楚地了解要解决的组件。

+0

已升级到4.33.0并仍然看到相同的行为。在Dotfuscator配置中是否有必须更改此设置以使其工作?我需要在某个.config文件中有重定向吗? – antlersoft

相关问题