我们一直在分解我们的 .NET 应用程序,以便在多个解决方案中使用的项目作为 NuGet 包构建和使用。其中一些项目需要混淆(我们使用 Eazfuscator),我不确定正确的工作流程应该是什么。
现在,我们的 CI 流程编译代码、运行检查并运行自动化单元测试。这运作良好。但是,如果我在每个构建中引入混淆,我将不得不打破依赖于我们使用InternalsVisibleToAttribute
. 我可以运行现有的流程,然后假设一切都很好(编译,没有引入检查错误,并且单元测试通过)为可以混淆的不同配置进行后续构建。但是我并没有完全测试混淆代码。
什么对您的商店有效?
另外,我还没有尝试过,但是通过 NuGet 交付的混淆程序集会降低设置符号服务器的有用性吗?调试情况如何?
注意:这些包都是供内部使用的,直到我们到达提供给客户的消费应用程序,这就是为什么我要求调试到包中的原因。
2016 年 12 月 12 日更新
我们最终使用的工作流程是拥有构建服务器:
- 正常编译
- 运行单元测试和检查
- 再次编译- 这次传入一个参数,启用条件编译符号
OBFUSCATE
- 现在
InternalsVisibleToAttribute
将被抑制(以及我们引用内部的任何测试)
- 现在
- 发布到我们的内部供稿
此更改和另一更改包括将ObfuscateAsemblyAttribute
结果包含在已标记为适合在构建消费应用程序时进行混淆的程序集中。该构建任务执行实际的混淆。
我对此不是 100% 满意,但这意味着我们没有使用多个构建配置。
不过,我仍然对其他人在做什么感兴趣。