2011-01-28 109 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命名空間。

相關問題