【发布时间】: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