我准备为客户结束一个大项目。要求是,最终装配必须是单个装配。通常我会将所有程序集混淆在一起,它会生成一个文件。但是这次我引用了第三方程序集,如PostSharp,Enterprise Libraries和一些特定的供应商API。
当我对项目进行模糊处理时,我最终得到了一个程序集,但它不再有效。
该项目是ACT的插件!这需要一个类来实现特定的接口。如果我构建并将所有输出文件复制到插件文件夹,它按预期工作和ACT!会看到插件,它会工作。使用单个混淆程序集,它不再有效。法案!不会看到插件。
我只能想象它是由这些第三方引用引起的,因为我在之前的项目中已经这样做了,只是从不使用任何第三方程序集或API。
我正在使用Xenocode进行混淆,但我会尝试任何事情。
答案 0 :(得分:1)
第一个问题并不是因为你使用的是第三方程序集,而是大多数人都喜欢ACT!期望和它的实现被混淆。获取Reflector甚至ILDasm并查看您感兴趣的类是否实现了ACT所需的接口!
我没有使用过Xenocode,但我希望它能指明哪些类/方法不应该被混淆。您的目标是保持接口及其实现不被混淆。
注意:我还建议您查看您使用的第三方组件的许可要求,因为它们可能不允许这样的合并。
答案 1 :(得分:1)
您不应该出于以下原因混淆第三方程序集:
尝试Crypto Obfuscator - 它支持包括第三方程序集而不会将它们列为“附加依赖项” - 它们最终只有一个程序集,因为依赖项嵌入在主程序集中并在程序集解析期间提供
免责声明:我为Crypto Obfuscator的开发者LogicNP Software工作。