【问题标题】:Making dotfuscator recognize two assemblies built against different versions of a third assembly are referencing the same assembly?让 dotfuscator 识别针对第三个程序集的不同版本构建的两个程序集引用同一个程序集?
【发布时间】:2018-01-08 13:22:31
【问题描述】:

我们有一个 .Net 应用程序 AppA,其中包括程序集 LibA 和 LibB。

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

当我们按原样运行 AppA 时,只使用最新版本的 LibA; LibB 中对 LibA 的所有引用都愉快地使用最新版本,而不是构建 LibB 所针对的版本。

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

解决方法是确保我们所有的程序集都是针对与其他程序集完全相同的版本构建的。这修复了混淆的应用程序,但它有点违背了我们的包管理策略的目的,该策略应该允许我们的每个库以自己的速度发展。我们开发的大量软件包很难扩展。

我是否缺少 Dotfuscator 中的某些开关或设置(我们使用的是商业版本的 4.8 版,但可以升级),这将使其仅按名称解析程序集引用,就像 .Net 在运行时一样,所以混淆会按我们预期的方式工作吗?

【问题讨论】:

    标签: .net obfuscation dotfuscator


    【解决方案1】:

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

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

    【讨论】:

    • 已升级到 4.33.0 并且仍然看到相同的行为。我必须在 Dotfuscator 配置中进行更改才能使其正常工作吗?我是否需要在某个 .config 文件中进行重定向?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2012-08-30
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2011-02-18
    • 2010-09-18
    相关资源
    最近更新 更多