2011-01-28 73 views
3

例如,假设我想在我的DLL中使用Bouncy Castle。由于我想简化部署,我使用ILMerge将MyDll.dllBouncyCastle.Crypto.dll结合起来生成MyDllMerged.dll。我使用ILMerge中的/internalize标志,以便客户端不使用我的Bouncy Castle。ILMerge:重命名内部化程序集的名称空间?

如果我的消费者EndUser.exe也使用Bouncy Castle,他会看到“Org.BouncyCastle...TypeFoo已在MyDllMerged.dll中定义”。因此,他注定不能自己使用他的图书馆。

是否有反正告诉ILMerge重命名程序集中的所有命名空间,除了内化它?或者有其他解决这个问题的方法吗? (我想有分发“合并”版本和“未合并”独立版本)。

+1

不知道我跟着/ internalize在那里,以确保用户*不*注定。他看不到TypeFoo,它是内部的。 – 2011-01-28 16:42:01

+0

@Hans Passant:这就是我的想法,但我做了一个简单的实验来证明它。事实证明,即使用户看不到'TypeFoo',它也是_actually_,并且在编译期间会导致最终的命名空间碰撞错误。 – kizzx2 2011-01-28 17:50:17

回答

1

一种方法是使用混淆器(SmartAssembly,Dotfuscator的,等等)混淆只是组织。生产的组件的BouncyCastle命名空间。

相关问题