'Archive' Visual Studio 中的操作 Xamarin 在混淆之前打包 DLL

'Archive' action in Visual Studio Xamarin is packaging DLL before obfuscation

我们最近从 VS2017 迁移到 VS2019,构建 Xamarin Forms 应用程序。多年以来,我们一直没有遇到混淆问题,但现在我们有了一个阻碍。总结一下:最终APK文件中的项目DLL是未混淆版本,不是混淆版本。

如果我们正常构建 Android 应用程序(在 Release 配置中)它工作正常:反编译文件显示了预期的混淆代码 - 完全无法理解。它还成功地将其从其工作 'dfout' 文件夹(在 'obj' 下)复制到 'bin' 文件夹,因此构建过程会按预期传播混淆文件;一切都很酷。

但是...当您 运行 'Archive' 创建 APK 文件时...情况有所不同。经过数小时的仔细检查后,我们发现确实发生了这种情况,但我们不知道为什么,也不知道如何修复它:项目 DLL(应该放在 APK 中)是从未混淆的代码中获取的。混淆然后 运行s 打包完成后,在 'obj' 和 'bin' 文件夹中留下正确的 DLL,但打包后的 APK 中的是未混淆版本。

这到底是怎么回事?

在另一个 Whosebug 问题的评论线程中找到了解决方案。

基本上这是 Dotfuscator 使用 VS2019 的问题,它需要一些新的 Dotfuscator 目标文件才能工作。最初这些也不起作用,但在删除所有 bin 和 obj 文件夹并在管理员模式下重新启动 VS 后就成功了。