2011-02-23 85 views
2

我准备好为客户端包装一个大项目。要求是,最后的组装必须是单个组件。通常我将所有程序集混淆在一起,并生成单个文件。但是这一次我引用了第三方程序集,如PostSharp,Enterprise Libraries和一些特定的供应商API。混淆引用第三方程序集的程序集

当我混淆项目时,我最终得到一个组件,但它不再有效。

该项目是ACT的插件!这需要一个类来实现特定的接口。如果我构建并将所有输出文件复制到插件文件夹,它按预期方式工作,并且ACT!会看到插件,它会工作。使用单个混淆的组件,它不再有效。法案!不会看到插件。

我只能想象,它是由这些第三方引用作为引起我做这个先前的项目,只是从来没有使用任何第三方组件或API。

我使用Xenocode做模糊处理,但我会尝试任何东西。

回答

1

第一个问题likley没有丝毫您正在使用第三方组件,但是该法案最likley接口的事实!期望及其实施被混淆。获取Reflector甚至ILDasm并查看您感兴趣的类是否实现了ACT所需的接口!

我没有用Xenocode,但我希望它有一个方法来指定哪些类/方法不应该进行模糊处理。您的目标是让界面及其实现免于混淆。

注:我也建议看看第三方组件的许可证要求你使用过,因为他们可能不会允许这样的合并。

+0

它仍然是。正如我所说的,我之前已经在一些项目上完成了这项工作(也包括ACT插件)。它恰好是这个项目不合作。 Xenocode(是)高端混淆工具之一。 – 2011-02-23 04:25:35

+0

我甚至将Xenocode设置为不混淆任何东西,只生成一个组合件,但它仍然无法工作。 – 2011-02-23 04:34:10

+0

您是否尝试过调试并查看失败?即如果你将第三方DLL合并到你的程序集中,那么他们不再工作就不足为奇 - 即任何反射代码都会喜欢工作。 – 2011-02-23 04:37:53

1

你不应该混淆第三方组件的原因如下:

  1. 你没有代码的内部运作的控制或知识,知道如何混淆它会影响其工作。即使你这样做(例如,如果它是开放源代码的话),如果这些程序集被混淆了,你是否愿意花时间处理任何可能出现的问题?
  2. 它不是你的IP,因此混淆第三方程序集没有什么好处,但是你得到了#1中描述的所有不利因素。

尝试Crypto Obfuscator - 它支持包括第三方组件,而不通过它们列为“其他的依赖关系”混淆他们 - 你仍然落得只有一个大会以来的依赖关系被嵌入你的主要组件内,并且在提供组装分辨率。

声明:我LogicNP软件,加密混淆器的开发工作。

+0

我不需要将它们混淆,只是将它们包含在单个程序集输出中。我会试一试。 – 2011-02-24 14:33:47

+2

@logincnp:如果您宣传自己的产品,则应在答案中明确说明,否则将其视为垃圾邮件。有关Meta的更多信息,请参阅[this](http://meta.stackexchange.com/questions/55914/is-it-ok-to-push-your-own-product-on-so)讨论。目前,您的很多答案都是收集[垃圾邮件标志](http://meta.stackexchange.com/questions/58032/how-does-the-spam-flag-work)。 – 2011-02-24 21:23:27

+1

@ ho1 - 我认为这已经足够清晰,因为我的登录名是“logicnp”,但如果这是必需的,我一定会说清楚的! – logicnp 2011-02-25 01:35:46

相关问题