例如,假设我想在我的DLL中使用Bouncy Castle。由于我希望简化部署,因此我使用ILMerge将MyDll.dll
和BouncyCastle.Crypto.dll
合并为MyDllMerged.dll
。我在ILMerge中使用/internalize
标志,以便客户端不使用我的Bouncy Castle。
如果我的消费者EndUser.exe
也使用了Bouncy Castle,他会看到Org.BouncyCastle...TypeFoo
中已经定义了“MyDllMerged.dll
”。因此,他注定要失败,不能自己使用他的那个图书馆。
除了内化它之外,还有告诉ILMerge重命名程序集中的所有命名空间吗?或者其他任何方法来解决这个问题? (我希望不分别分发“合并”版本和“未合并”版本。)
答案 0 :(得分:1)
一种方法是使用混淆器(SmartAssembly,Dotfuscator等)来混淆生成的程序集的Org.BouncyCastle命名空间。