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